2011-04-19 3 views
3

저는 파이썬을 배우고 재미있는 것을 배웁니다. 문자열에서 패턴을 검색하고 일치하는 항목이 있으면 결과를 반환하는 람다 함수를 작성하려고합니다. 그렇지 않으면 빈 문자열입니다. 난 이미 쓴 것을 :Regex 검색 결과가 반환되거나 비어 있습니다.

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

또는 제발 말은, 내가 어떻게 더 나은 람다 것을 쓸 수있다? UPD 아, 미안, 잊어 버렸어 : 파이썬 2.7에서 해냈다.

답변

9

전혀 쓰지 마라.

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