패턴 (?<!(asp|php|jsp))\?.*
은 PCRE에서 작동하지만 파이썬에서는 작동하지 않습니다.Python Regex Negative Lookbehind
그래서이 정규 표현식을 파이썬에서 사용하려면 어떻게해야합니까? (Python 2.7)
패턴 (?<!(asp|php|jsp))\?.*
은 PCRE에서 작동하지만 파이썬에서는 작동하지 않습니다.Python Regex Negative Lookbehind
그래서이 정규 표현식을 파이썬에서 사용하려면 어떻게해야합니까? (Python 2.7)
그것은 나를 위해 완벽하게 작동합니다. 당신이 잘못 사용한 것입니까? re.match
대신 re.search
를 사용해야합니다 :
>>> import re
>>> s = 'somestring.asp?1=123'
>>> re.search(r"(?<!(asp|php|jsp))\?.*", s)
>>> s = 'somestring.xml?1=123'
>>> re.search(r"(?<!(asp|php|jsp))\?.*", s)
<_sre.SRE_Match object at 0x0000000002DCB098>
당신의 패턴 작동 방법을 정확히. glglgl에서 언급했듯이 Match
개체를 변수 (예 : m
)에 할당하고 m.group()
을 호출하면 일치하는 항목을 얻을 수 있습니다. 그 결과는 ?1=123
입니다.
그런데 안쪽 괄호를 생략 할 수 있습니다. 이 패턴은 다음과 같습니다.
(?<!asp|php|jsp)\?.*
... 그리고're.search (r "(? glglgl
어떻게 작동하지 않습니까? 오류가 있습니까? 그렇다면 오류를 게시하십시오. 예상과 일치하지 않습니까? 그렇다면 코드를 사용하는 곳에 게시하고 얻은 결과를 예상 한 것과 비교하십시오. – BrenBarn
다음은 re 모듈의 [doc] (http://docs.python.org/2/library/re.html)이며 부정적인 lookbehind 어설 션에 대한 지원을 명확히 기술하고 있습니다. –
모든 대안의 길이가 동일한 경우 제외 검색 기능이 작동합니다. 그래서 이것은'(? georg