정규식 \ p {L} 및 \ p {N}


106

정규식을 처음 사용하며 다음 정규식을 받았습니다.

(\p{L}|\p{N}|_|-|\.)*

*의 의미와 | "또는"을 의미하고 \는 이스케이프합니다.

그러나 나는 무엇 \p{L}\p{N}의미 하는지 모른다 . 결과없이 Google에서 검색했습니다 ...

누군가 나를 도울 수 있습니까?


나도 검색했지만 이 결과를 얻었습니다 .
MC Emperor

답변:


160

\p{L}"문자"범주의 단일 코드 포인트와 일치합니다.
\p{N}모든 스크립트의 모든 종류의 숫자와 일치합니다.

출처 : regular-expressions.info

정규식을 많이 사용하려면 해당 사이트를 북마크에 추가하는 것이 좋습니다. 매우 유용합니다.


빠른 답변을 위해 thx :). 그러나 정규식이 10과 일치해서는 안됩니까? : 나는 온라인 정규식 정규 시도 regexpal.com
Diemauerdk

@ user1093774 : regexpal이를 지원 한다고 생각하지 않지만 맞아야 합니다 \p{}.
Cerbrus 2013

1
이 구문은 모든 인터프리터가 인식하지 못하는 최신 유니 코드 정규식 구현에만 적용됩니다. \ p {L}을 {a-zA-Z} (ascii 표기법) 또는 {\ w} (perl / vim 표기법)로 안전하게 대체 할 수 있습니다. {0-9} (ascii) 또는 {\ d} (perl / vim)의 \ p {N}입니다. 당신이 그들 모두 일치 할 경우에, 다만 할 {A-ZA-Z0-9} + 또는 {\ w \ D} +
라파엘 BECKEL

16
라파엘, 나는 '그나마 안전하게 대체 할 수 있음을 동의 \p{L}에 의해 {a-zA-Z}. {a-zA-Z}예를 들어 é는 프랑스어로 사용 되는와 같이 악센트 부호가있는 문자와 일치하지 않습니다 . 따라서 영어 만 처리하고 다른 것은 처리하지 않는 경우에만 안전하게 교체 할 수 있습니다.
Rolf

코드 포인트 또는 코드 단위와 일치합니까? stackoverflow.com/a/27331885/4928642
Qwertiy

30

유니 코드 속성 바로 가기 ( \p{L}유니 코드 문자 용, \p{N}유니 코드 숫자 용)입니다. .NET, Perl, Java, PCRE, XML, XPath, JGSoft, Ruby (1.9 이상) 및 PHP ( 5.1.0 이후 )에서 지원됩니다.

어쨌든 그것은 매우 이상한 정규식입니다. 문자 클래스가 충분할 때 대체를 사용해서는 안됩니다.

[\p{L}\p{N}_.-]*

XML에서의 정규식 - 난 : 자신을 정규식을 constrcuted하지 않은
Diemauerdk

캡처 링 괄호가 사용되었다는 사실과는 별도로 RE는 실제로 동일한 것으로 컴파일됩니다 ( \p{…}애초에 이스케이프 시퀀스 스타일 을 지원하는 최적화 RE 엔진 에서).
Donal Fellows

XRegExp 유니 코드 플러그인처럼 보입니다. 그렇다면 모든 언어의 영숫자입니다
Tim

감사합니다. 지원 언어를 나열하는 것이 유용했고 거기에 제한이 있다는 것을 알지 못했습니다 (대부분의 정규식은 "보편적"임).
HoldOffHunger

@HoldOffHunger : 불행히도 그것과는 거리가 멀다. 그렇기 때문에 RegexBuddy와 같은 도구 시장이 있습니다. 보세요 regular-expressions.info/refbasic.html을 , 당신은 정규식 맛의 미묘한 및 그리 미묘한 차이에 놀랄거야 ...
팀 Pietzcker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.