小编典典

返回第一个匹配正则表达式的字符串

python

我想获得正则表达式的第一场比赛。

在这种情况下,我得到了一个列表:

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

是否有一种无需定义新功能即可获得该结果的方法?


阅读 294

收藏
2020-12-20

共1个答案

小编典典

您可以''通过添加默认值到您的正则表达式中|$

>>> re.findall('\d+|$', 'aa33bbb44')[0]
'33'
>>> re.findall('\d+|$', 'aazzzbbb')[0]
''
>>> re.findall('\d+|$', '')[0]
''

也可以与re.search其他人指出:

>>> re.search('\d+|$', 'aa33bbb44').group()
'33'
>>> re.search('\d+|$', 'aazzzbbb').group()
''
>>> re.search('\d+|$', '').group()
''
2020-12-20