正则表达式搜索返回结果或为空

3 投票
1 回答
2235 浏览
提问于 2025-04-16 16:00

我在学习Python的时候,遇到了一件有趣的事情:我想写一个lambda函数,用来在字符串中查找某个模式,如果找到匹配的就返回结果,如果没有找到就返回空字符串。我已经写了以下代码:

>>> b = lambda x: re.search("_\w+_", x).group(0) if re.search("_\w+_", x) is not None else ''

如果我的字符串中只有一个匹配项,这个函数可以正常工作,但我不知道如果字符串中有多个匹配项,怎么才能返回一个字典来显示我的结果。举个例子:

>>> b('sdsd _sdsd_ sdsd sdsd _sssssssss_')
'_sdsd_'

或者请告诉我,怎么才能把这个lambda函数写得更好?
更新:哦,抱歉,我忘了说:我是在Python 2.7中做这个的。

1 个回答

9

根本就不要写这个。

>>> re.findall("_\\w+_", 'sdsd _sdsd_ sdsd sdsd _sssssssss_')
['_sdsd_', '_sssssssss_']
>>> re.findall("_\\w+_", '')
[]

撰写回答