2011-04-19 136 views
3

我学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_' 

或者请告诉我,我该怎么写拉姆达更好? UPD 噢,对不起,我忘了:我在Python 2.7中做到这一点。

回答

9

不要写它。

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