如果找到则返回捕获组的第一个实例,否则返回空字符串

时间:2017-01-19 04:14:02

标签: regex python-3.x

我的输入是可能包含或不包含模式的字符串:

p = '(\d)'
s = 'abcd3f'

如果找到该模式的第一个匹配,我想返回捕获组,否则返回一个空字符串。

result = re.search(p, s)[1]

将返回第一场比赛。但是,如果s = 'abcdef',则search将返回None,索引将引发异常。而不是这样做,我希望它只返回一个空字符串。我能做到:

g = re.search(p, s)

result = ''
if len(g) > 0: result = g[1]

甚至:

try:
    result = re.search(p, s)[1]
except:
    result = ''

但对于这么简单的事情来说,这些看起来都很复杂。是否有一种更优雅的方式来实现我想要的东西,最好是一行?

1 个答案:

答案 0 :(得分:0)

您可以使用if YourString is None:来实现这一目标。例如:

if s is None : s = ''

Python示例:

import re
m = re.search('(\d)', 'ab1cdf')
if m is None : m = ''
print m.group(1)