首页 > 编程语言 > 详细

Python正则表达式返回首次匹配到的字符及查询的健壮性

时间:2018-01-09 22:53:56      阅读:472      评论:0      收藏:0      [点我收藏+]

re.findall(pattern,string)会搜索所有匹配的字符,返回的是一个列表,获取首个匹配需要re.findall(pattern,string)[0]访问, 但是如果findall没匹配成功则返回空列表,这时用列表下标去访问元素时就会报IndexError: list index out of range。

如:

>>>re.findall(abc,abd)
[]
>>>re.findall(abc,abd)[0]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list index out of range

 

我们可以在pattern后面加一个"|$"来生成一个默认的‘‘元素:

>>>re.findall(abc|$,abd)[0]
‘‘
>>>re.findall(abc|$,abcdef) #注意,无论匹配到与否,都会附加上一个‘‘元素
[abc, ‘‘]

 

同样适用于re.search

>>> re.search(\d+|$, aa33bbb44).group()
33
>>> re.search(\d+|$, aazzzbbb).group()
‘‘

 

如果不加|$的话:

>>>re.search(\d+, aazzzbbb).group() #search没匹配上,再用.group()就会报错
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: NoneType object has no attribute group

 

参考:https://stackoverflow.com/questions/38579725/return-string-with-first-match-regex

Python正则表达式返回首次匹配到的字符及查询的健壮性

原文:https://www.cnblogs.com/huahuayu/p/8253882.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!