【发布时间】:2016-07-26 01:19:34
【问题描述】:
我想获得正则表达式的第一个匹配项。
在这种情况下,我有一个列表:
text = 'aa33bbb44'
re.findall('\d+',text)
['33', '44']
我可以提取列表的第一个元素:
text = 'aa33bbb44'
re.findall('\d+',text)[0]
'33'
但这只有在至少有一个匹配时才有效,否则我会得到一个错误:
text = 'aazzzbbb'
re.findall('\d+',text)[0]
IndexError: 列表索引超出范围
在这种情况下我可以定义一个函数:
def return_first_match(text):
try:
result = re.findall('\d+',text)[0]
except Exception, IndexError:
result = ''
return result
有没有一种方法可以在不定义新函数的情况下获得该结果?
【问题讨论】:
-
对我来说,接受的答案不起作用。我不得不删除数组索引访问并改用
len(re.findAll)==0check。