我的输入是可能包含或不包含模式的字符串:
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 = ''
但对于这么简单的事情来说,这些看起来都很复杂。是否有一种更优雅的方式来实现我想要的东西,最好是一行?
答案 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)