전화 번호와 일치하는 정규 표현식을 작성했습니다. 내가 만난 문제 중 하나는 일부 우편 번호가 전화 번호처럼 보입니다. 예를 들어, 브라질, 우편 번호는 다음과 같습니다 :Python 정규식 부정적인 lookbehind가 일치하지 않음
In [63]: re.search(r"(?P<phone>\d+\.\d+-\d+)", "30.160-0131")
Out[63]: <_sre.SRE_Match at 0x102150990>
는 다행히 같은 우편 번호는 종종 일반적으로 "우편 번호를 의미 접두사와 함께 제공 :
30.160-0131
그래서 간단한 정규식 그들에게 같은 잘못된 반응을 사로 잡을 것입니다 다음과 같이 ": 당신이 전화 번호처럼 보이는 뭔가 앞에 CEP를 참조하면
CEP 30.160-0131
그래서, 다음은 전화 번호가 아니다 - 그것은 우편 번호입니다. 나는 negative lookbehind을 사용하여이를 포착하기 위해 정규 표현식을 작성하려고 시도했지만 작동하지 않습니다. 여전히 일치 함 :
In [62]: re.search(r"(?<!CEP)(\d+\.\d+-\d+)", "CEP 30.160-0131")
Out[62]: <_sre.SRE_Match at 0x102150eb8>
왜 여전히 일치합니까? 그리고 어떻게하면 부정적인 표정으로 경기에 실패 할 수 있습니까?
일부가 일치 할 수 있기 때문에 : http://regex101.com/r/aU4fV4/1 – jonrsharpe