我学习Python,并碰到了有趣的事情: 我尝试编写lambda函数,它将搜索字符串中的模式,如果找到匹配则返回结果,否则返回空字符串。我已经写过:
>>> b = lambda x: re.search("_\w+_", x).group(0) if re.search("_\w+_", x) is not None else ''
如果我的字符串只有一个匹配 - 这可以正常工作,但我不知道如果字符串在传递的字符串中包含多个匹配项,我怎么能用结果返回dict。 例如:
>>> b('sdsd _sdsd_ sdsd sdsd _sssssssss_')
'_sdsd_'
或者请告诉我,我怎样才能更好地写出这个lambda? UPD 哦,对不起,我忘了:我是用Python 2.7做的。
答案 0 :(得分:9)
根本不要写。
>>> re.findall("_\\w+_", 'sdsd _sdsd_ sdsd sdsd _sssssssss_')
['_sdsd_', '_sssssssss_']
>>> re.findall("_\\w+_", '')
[]