正则表达式-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

 



posted @ 2018-08-20 09:04  雨彡  阅读(253)  评论(0编辑  收藏  举报