다음 줄을 작성한 프로그래머는 아마도 regex
이라는 파이썬 패키지를 사용합니다. 어떤 사람은 무엇 A='\p{Word_Break=ALetter}'
및 -+
방법을 설명파이썬 정규식 컴파일
UNIT = regex.compile("(?:{A}(?:'{A})?)++|-+|\S".format(A='\p{Word_Break=ALetter}'))
을 도와 드릴까요?
다음 줄을 작성한 프로그래머는 아마도 regex
이라는 파이썬 패키지를 사용합니다. 어떤 사람은 무엇 A='\p{Word_Break=ALetter}'
및 -+
방법을 설명파이썬 정규식 컴파일
UNIT = regex.compile("(?:{A}(?:'{A})?)++|-+|\S".format(A='\p{Word_Break=ALetter}'))
을 도와 드릴까요?
\p{property=value}
연산자는 유니 코드 코드 포인트의 속성에 일치하고 연결된 패키지 인덱스 페이지에 설명되어 있습니다 :
포함
- 스크립트와 블록
\p{property=value}; \P{property=value}; \p{value} ; \P{value}
유니 코드 코드 포인트의 특성,
이 항목은 어떤 유니 코드 문자와도 일치합니다 depoint의 값은 ALetter
인 Word_Break
property입니다. 현재 유니 코드 코드 포인트 데이터베이스에는 24941 개의 일치 항목이 있습니다 (자세한 내용은 Unicode Text Segmentation, Word Boundaries chapter specifiation 참조).
예제는 표준 파이썬 string formatting을 사용하여 부분 표현식을 컴파일 할 정규 표현식으로 보간합니다. "{A}"부분은 .format(A='...')
부분을 채울 수있는 자리 표시 자일뿐입니다. 최종 결과는 다음과 같습니다
"(?:\p{Word_Break=ALetter}(?:'\p{Word_Break=ALetter})?)++|-+|\S"
-+
순서가 방금 파이썬 re
모듈 식처럼, 하나 또는 그 이상의 -
대시 일치
지금은 ++
보다이 더 흥미 롭습니다. 그것은 possessive quantifier이고 정규 표현식 정규 표현식이 패턴의 모든 가능한 순열을 시도하지 못하게합니다. 이는 성능 최적화로서 catastrophic backtracking 문제를 방지합니다.
나는'pypi' 태그를 제거했습니다. 모듈은 pypi를 통해 배포 될 수 있지만이 문제는'pypi' 자체에 관한 것이 아닙니다. –