2013-08-14 3 views
2

키워드 'car'로 모든 구문을 검색하려고했습니다.파이썬 정규식 검색

텍스트 = '앨리스 : 스피드 카, 레드 카, 신차', '스피드 카', '레드 카', '신차'를 찾고 싶습니다.

import re 
text = 'alice: speed car, my red car, new car' 
regex = r'([a-zA-Z]+\s)+car' 
match = re.findall(regex, text) 
if match: 
    print(match) 

그러나 상기 코드 수율 :

["speed ", "red ", "new "] 

대신

["speed car", "my red car", "new car"] 

의 예상?

답변

4

문제 정규식에 'car'을 캡쳐하지 않고 전체 정규식을 () 안에 넣고 내부 정규식에 ?:을 사용하여 캡쳐하지 않은 그룹으로 만듭니다.

>>> regex = r'((?:[a-zA-Z]+\s)+car)' 
>>> text = 'alice: speed car, my red car, new car' 
>>> re.findall(regex, text) 
['speed car', 'my red car', 'new car']