我想获得正则表达式的第一场比赛。
在这种情况下,我得到了一个列表:
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
是否有一种无需定义新功能即可获得该结果的方法?
您可以''通过添加默认值到您的正则表达式中|$:
''
|$
>>> re.findall('\d+|$', 'aa33bbb44')[0] '33' >>> re.findall('\d+|$', 'aazzzbbb')[0] '' >>> re.findall('\d+|$', '')[0] ''
也可以与re.search其他人指出:
re.search
>>> re.search('\d+|$', 'aa33bbb44').group() '33' >>> re.search('\d+|$', 'aazzzbbb').group() '' >>> re.search('\d+|$', '').group() ''