正则表达式搜索返回结果或为空
我在学习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+_", '')
[]