2011-04-19 130 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+_", '') 
[] 
相關問題