re正则

 s = 'aaab2c1d3b4'
match()匹配开头,匹配到一个就返回
re.match('a;s)
a
search(),匹配所有,匹配到就返回, [ ]代表范围
print(re.search('[0-9]',s))
2

findall()  匹配所有,找到全部,返回列表

print(re.findall('[0-9]',s))
['2', '1', '3', '4']
 '.'匹配任意字符,匹配几个就写几个.
print(re.search('..',s))
aa
'^'匹配开头,效果和macth一样  \A
print(re.search('^aaa',s))
print(re.match('aaa',s))
aaa
aaa
'$'匹配结尾
print(re.search('4$',s))
4
'*' 匹配*号前的开头字符0次或者多次,如果匹配一个字符,则从开头查找,如果是多个字符,则多个同时查找
print(re.search('cc1*','1aa1aab1bbc1cc111').group)
cc111
'+'匹配前面一个字符1次或者多次,查找全部
print(re.search('z+','aabb111123daaaa1aazzabbzd'))
zz
'?' 匹配一个字符0次或1次
print(re.search('az?','vazzzzZzyiqunz'))
az
{m},匹配一个字符,连续匹配到多少次,
print(re.search('a{3}','1bbbvvvaaaa'))
aaa
{n,m} 匹配一个字符n到m次,默认按匹配最大的匹配,如果最大的没有,就依次匹配小一次
print(re.search('[a-z]{1,3}','1zheng'))
zhe
| 匹配左边或者右边的字符,一个匹配到就返回
print(re.search('[Z|z]heng','Zheng'))
Zheng
'(...)'分组匹配,需要配合groups使用 
print(re.search('(\D+)(\d+)','zheng123').groups())
('zheng', '123')

\d+ 匹配数字,相当于[0-9]+ 匹配任意多个数字,贪婪模式
print(re.search('\d+','ascasd1321654132d'))
1321654132
\D 匹配非数字
print(re.search('\D+','deasq2c123'))
deasq
\A 只匹配开头,效果和^ match 效果一样
print(re.search('\Aaaa','aaa112av'))
aaa
\w匹配[A-Za-z0-9]
print(re.search('\w+','asdasd12312asd*asd+'))
asdasd12312asd
\W匹配非[A-Za-z0-9]
print(re.search('\W+','asdasd123/!*12asd*@asd+'))
/!*
'(?P<name>)'分组匹配
s = '360281199206240010'
res = re.search('(?P<sheng>\d{3})(?P<city>\d{3})',s)
print(res.groupdict())
{'sheng': '360', 'city': '281'}
split 和findall功能相反
print(re.split('\D+',s))
print(re.findall('\D+',s))
['', '2', '1', '3', '4']
['aaab', 'c', 'd', 'b']
分隔字符,maxsplit 分隔几次
s = '123,3123,asdasd,234234'
print(re.split(',',s,maxsplit=2))
['123', '3123', 'asdasd,234234']
fullmatch匹配全部
print(re.fullmatch('123','123'))
print(re.fullmatch('\w+@\w+\.(com|cn|edu)','493791411@qq.com'))
123
493791411@qq.com
通过先定义匹配规则,然后在进行匹配,这样如果有大量匹配的时候,效率很高
ress = re.compile('\w+@\w+\.(com|cn|edu)')
print(ress.match('493791411@qq.com'))

 


 

posted on 2018-12-04 21:55  一群羊  阅读(200)  评论(0编辑  收藏  举报

导航