正则表达式-re模块
导入import re
python中通过re模块来处理正则表达式。re模块的常用方法如下:
re.match(re规则,字符串):从头开始匹配。从字符串的第一个字符开始匹配,如果第一个字符不匹配规则,那么匹配失败。
match(pattern, string, flags=0)
re.search(re规则,字符串):匹配包含。不要求从字符串的第一个字符就匹配。只要字符串当中有匹配该规则的,则就匹配成功。
search(pattern, string, flags=0)
re.findall(re规则,字符串):把所有匹配的字符放在列表中并返回。
findall(pattern, string, flags=0)
re.sub(re规则,替换串,被替换字符串):匹配字符并替换。
sub(pattern, repl, string, count=0, flags=0)
正则常用规则1:
'.' 匹配除“\n”之外的任何单个字符
'^' 匹配字符开头
'$' 匹配字符结尾
'*' 匹配*前面的字符0次 或多次
'+' 匹配前一个字符1次 或多次
'?' 匹配前一个字符0次 或1次
'{m}' 匹配前一个字符m次
>>> import re
>>> re.match('.','abdfffhhh123')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match('.','abcfffhhh123').group()
'a'
>>> re.match('.*','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 12), match='abcfffhhh123'>
>>> re.match('^a.*3$','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 12), match='abcfffhhh123'>
>>> re.match('a.*5$','abcfffhhh123')
>>> re.search('f*','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search('^af*','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match('af*','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match('af+','abcfffhhh123')
>>> re.match('.*f+','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 6), match='abcfff'>
>>> re.match('.*f?','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 12), match='abcfffhhh123'>
>>> re.match('af{3}.*','abcfffhhh123')
>>> re.match('.*f{3}','abcfffhhh123')
<_sre.SRE_Match object; span=(0, 6), match='abcfff'>
>>>
正则常用规则2:
'\d' 匹配一个数字字符
'\D' 匹配一个非数字字符
'\w' 匹配包含下划线的任何单词字符。等价于”[A-Z a-z 0-9 _]“
'\W' 匹配任何非单词字符
'(pattern)' 匹配pattern并获取这一匹配
'[a-z]' 字符范围。匹配指定范围内的任意字符
'[xyz]' 字符集合。匹配所包含的任意一个字符
>>> re.search('\d','123abc')
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> re.search('\d{3}','123abc').group()
'123'
>>> re.search('\D','123abc').group()
'a'
>>> re.search('\w{5}','123_abc@@###').group()
'123_a'
>>> re.search('\W','123abc@@@###').group()
'@'
>>> re.findall('(\d{2})','12abd55ggg')
['12', '55']
>>> re.findall('[abc]','12abd55ggg')
['a', 'b']
>>> re.findall('[0-9]','12abd55ggg')
['1', '2', '5', '5']
>>> re.findall('[0-9][abc]','12abd55ggg')
['2a']
>>> re.search('(\d).*','abcfffhhh1235,ab478').group()
'1235,ab478'
>>> re.search('(\d).*','abcfffhhh1235,ab478').group(1)
'1'
正则表达式手册参考:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html