码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-01-09 23:11:21      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:tac   .com   dex   bbb   span   表达   exe   group   https   

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正则表达式返回首次匹配到的字符及查询的健壮性

标签:tac   .com   dex   bbb   span   表达   exe   group   https   

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

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