이 new way to recognise 주소를 파이썬에서 사용하려면 어떻게 다시 작성해야합니까? 내가 파이썬 생각하지 않는다Gruber의 URL Python의 정규 표현식
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
이 new way to recognise 주소를 파이썬에서 사용하려면 어떻게 다시 작성해야합니까? 내가 파이썬 생각하지 않는다Gruber의 URL Python의 정규 표현식
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
그의 original source 미국 ASCII에 해당하며 특히 펄 "이 패턴은 가장 현대 정규식 구현에서 작동합니다." 파이썬의 정규식 구현은 현대적이며 similar to Perl's이지만 [:punct:]
문자 클래스가 없습니다. 당신은 쉽게를 사용하는 것을 구축 할 수 있습니다 : 문자 as required을 설정 내부
>>> import string, re
>>> pat = r'\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^%s\s]|/)))'
>>> pat = pat % re.sub(r'([-\\\]])', r'\\\1', string.punctuation)
re.sub()
호출은 특정 문자를 이스케이프합니다.
편집 : 그냥 모든 앞에 백 슬래시 스틱 이후 re.escape 사용은(), 그냥 잘 작동합니다. 처음에는 나에게 미숙 한 느낌 이었지만,이 경우에는 확실히 잘 작동합니다.
>>> pat = pat % re.escape(string.punctuation)
는 POSIX bracket expressions이없는
[-!\"#$%&\'()*+,./:;<=>[email protected]\\[\\\\]^_`{|}~]
Wikipedia가 잘못되었습니다.를 참조하십시오. http://www.regular-expressions.info/posixbrackets.html에 따르면, 캐럿이 빠져 있습니다. –
좋아, 지금 그것이 옳다. 답변을 업데이트하십시오. –
예, 내 게시물을 업데이트했습니다. 감사합니다. 누군가 위키 백과도 업데이트했습니다. 큰! – YOU
파이썬
[:punct:]
Wikipedia이 [:punct:]
은 동일 말한다이 표현이있다.
[:punct:]
브래킷식이
[!"#$%&'()*+,\-./:;<=>[email protected][\\\]^_`{|}~]
백 슬래시 이스케이프가 올바르지 않으므로 "raw"문자열 (접두사'r')을 사용해야합니다. –
파이썬은 유니 코드 문자 프로퍼티를 지원하지 않습니다. http://stackoverflow.com/questions/1832893 –
사실, 컴파일은 잘되고 있지만 예상대로하지 마십시오. – Tobias
어떤 부분이 작동하지 않습니까? –
질문에 코드를 넣지 마십시오. –
@vanity가 실패한 예제와 함께 유니 코드 문자 속성이있는 대답은 작동하지 않습니다. http://stackoverflow.com/questions/1832893/python-regex-matching-unicode-properties –