2017-04-12 1 views
0

나는 다음과 같은 정규 표현식을 테스트했습니다. 사이에 유로화 기호가있는 가격을 인식하도록 패턴이 만들어집니다 (40€50). 정규 표현식이 python이 아닌 pythex에서 작동하는 이유는 무엇입니까? <a href="http://pythex.org" rel="nofollow noreferrer">http://pythex.org</a>에</p> <pre><code>r"([ds]{1,})b(s?[€]s?)([d]{1,})" </code></pre> <p>그것은 실제로 작동 :

enter image description here

그런 다음 파이썬에서, 나는이 같은 테스트 :

이 스크린 샷을 참조하십시오

regex3 = r"([\d\s]{1,})\b(\s?[€]\s?)([\d]{1,})" 

line = "37€00" 

pct_re = re.compile(regex3) 
print(pct_re.search(line)) 

을 그리고 None를 인쇄합니다. 이 패턴에 대해서는 : r"([\d\s]{1,},?[\d]{1,}?)\b(\s?[€])", Iit은 Pythex와 Python에서 모두 작동합니다. (이 정규식은 끝에 37.50 유로의 가격을 유로화로 인식합니다). 실제로 "Match + object reference"와 같은 것을 출력하지만 "None"은 출력하지 않습니다 !!

stackoverflow에서 비슷하게 보이는 스레드는 re.match 대신 re.search 대신 일치하는 부분이 처음에 일치하므로이 작업을 수행 한 것입니다.

여기 실수는 바보 같지만 도움을 주시면 감사하겠습니다.

+1

어떤 python 버전을 사용하고 있습니까? –

+0

@ cricket_007 현재 파이썬 2.7 (2.7.13) –

+0

의미론을 사용하고 있지만'{1,}'은 (+)와 동일하지 않습니까? – asongtoruin

답변

0

이유를 모르겠다. compile; 이게 잘 작동했습니다 :

regex3 = r"([\d\s]{1,})\b(\s?[€]\s?)([\d]{1,})" 

line = "37€00" 

print re.search(regex3, line) 

그 결과는 <_sre.SRE_Match object>입니다. 정규 표현식을 사용하기 전에 compile 할 필요가 없습니다.

관련 문제