2014-10-17 2 views
0

이 정규식이 일치하는 항목을 반환하지 않는 이유를 알고 있습니까? 내가 어떤 정규식 테스트 도구에서이 정규식을하려고 할 때Python 정규식이 일치하지 않습니다.

local = u'Rua Engenheira Enedina Alves Marqu\xeas, 126 - Cajuru, Cajuru, Curitiba - PR' 
p = re.compile(ur'\d[ ]+?-(.*?)(?:,|-)') 
matches = re.match(p,local) 

Link to test

은 내가이 경우 내가 단어

에게

+0

안녕, thoose 두 웹 사이트 (pythex)에서 봐 주시기 바랍니다 [https://pythex.org/]와 (pyregex) HTTP : // WWW p에서 컴파일 된 표현은 search()도 방법이있다 .pyregex.com /]. 그들은 모두 당신에게 도움이 될 것입니다! – VivienG

답변

3

까 주루를 캡처 할, 내가 원하는 반환 re.match() (re.search() 아님)을 사용 중입니다. re.match()시작 앵커.

re.search()를 작품을 사용 :

>>> local = u'Rua Engenheira Enedina Alves Marqu\xeas, 126 - Cajuru, Cajuru, Curitiba - PR' 
>>> p = re.compile(ur'\d[ ]+?-(.*?)(?:,|-)') 
>>> re.search(p, local) 
<_sre.SRE_Match object at 0x104dde288> 
>>> re.search(p, local).group() 
u'6 - Cajuru,' 

파이썬 정규식 HOWTO의 match() vs. search() section를 참조하십시오

match() 기능만을 검사 search()가 스캔하는 동안 RE 문자열의 시작 부분에 일치하는 경우 일치하는 문자열을 전달합니다. 이러한 구분을 염두에 두는 것이 중요합니다. match()은 0에서 시작하는 성공적인 일치만을보고합니다. 일치 항목이 0에서 시작하지 않으면 match()은이를보고하지 않습니다.

여기에 모듈 레벨 re.search()을 호출 할 필요가 없습니다.

>>> p.search(local).group() 
u'6 - Cajuru,' 
+0

덕분에, 나는 링크를 읽고 차이를 얻었다. 이제 제 코드가 작동 중입니다. =) –

관련 문제