码迷,mamicode.com
首页 > 其他好文 > 详细

正则杂记

时间:2020-05-11 13:27:07      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:没有   一点   match   dal   logs   模块   imp   有意思   关于   

关于re模块中search()、match()、findall()的区别

首先看search()跟match()的区别


import re
a = python Python CDpython CDPython
re1 = re.search(r(p|P)ython,a)
print(re1.groups())
print(re1)
re2 = re.match(r(P|p)ython,a)
print(re2.groups())
print(re2)
#out
(p,)
<re.Match object; span=(0, 6), match=python>
(p,)
<re.Match object; span=(0, 6), match=python>

 发现search跟match这样匹配都是可以的。

 再来看一下

import re
a = apython Python CDpython CDPython‘  #多了一个a
re1 = re.search(r(p|P)ython,a)
print(re1.groups())
print(re1)
re2 = re.match(r(P|p)ython,a)
# print(re2.groups())  这里会报错,原因是没有匹配到子表达式
print(re2)

#out
(p,)
<re.Match object; span=(1, 7), match=python>
None  

 通过上面返回内容不一样,可以看出,match函数匹配时会按照从左到右顺序匹配元字符,如果首字符不是子表达式里面的,就什么也匹配不到。会返回None,结束匹配。

 至于groups()去提取匹配结果就更不用说了。

 所以,search就会实用一点,match看实际需求吧

再来看findall

re3 = re.findall(r(p|P)ython,a)
print(re3)
#out
[p, P, p, P]

可以看出findall就有意思多了,它把每个边界的字符都匹配到了,返回一个字典,很直观。

 参考:https://www.cnblogs.com/Angliu/archive/2018/06/30/9247611.html

正则杂记

标签:没有   一点   match   dal   logs   模块   imp   有意思   关于   

原文地址:https://www.cnblogs.com/riNgo-joy0/p/12868232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!