2013-02-15 17 views
54

Jestem nowy na wyrażeniach regularnych i nadano następujące wyrażenia regularnego:Wyrażenie regularne p {L} i p {N}

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

wiem co * środki i | oznacza "lub" i że \ ucieka.

Co jednak nie wiem, co oznacza \p{L} i \p{N}. Przeszukałem Google, bez rezultatu ...

Czy ktoś może mi pomóc?

+0

I Googled go też, ale mam [ten wynik] (https://stackoverflow.com/a/14891168/507738). –

Odpowiedz

84

\p{L} dopasowuje pojedynczy punkt kodowy w kategorii "litera".
\p{N} dopasowuje dowolny rodzaj znaku numerycznego w dowolnym skrypcie.

Źródło: regular-expressions.info

Jeśli masz zamiar pracować z wyrażeń regularnych dużo, sugeruję, że zakładki witryny, jest to bardzo przydatne.

+0

thx za szybką odpowiedź :). Ale czy regex nie pasuje do 10? Próbowałem online matcher regex: http://regexpal.com/ – Diemauerdk

+0

@ user1093774: Nie sądzę, [regexpal] (http://regexpal.com/) obsługuje '\ p {}', ale tak, to powinno pasować. – Cerbrus

+1

Ta składnia jest specyficzna dla współczesnej implementacji regex Unicode, której nie rozpoznają wszyscy tłumacze. Możesz bezpiecznie zastąpić \ p {L} przez {a-zA-Z} (notacja ascii) lub {\ w} (notacja perl/vim); i \ p {N} od {0-9} (ascii) lub {\ d} (perl/vim). Jeśli chcesz dopasować je wszystkie, po prostu wykonaj: {a-zA-Z0-9} + lub {\ w \ d} + –

17

Są to skróty właściwości Unicode (\p{L} dla liter Unicode, \p{N} dla cyfr Unicode). Są obsługiwane przez .NET, Perl, Java, PCRE, XML, XPath, JGSoft, Ruby (1.9 i wyżej) i PHP (since 5.1.0)

W każdym razie jest to bardzo dziwne wyrażenie regularne. Nie należy używać naprzemiennie, gdy klasa znaków wystarczyłby:

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

jego regex w xml - nie utworzyłem restrykcji w regex :) – Diemauerdk

+0

Oprócz tego, że użyto przechwytywania nawiasów, REs faktycznie skompiluje się do tego samego (no, w każdym optymalizującym silniku RE, który obsługuje '\ p { ...} 'styl sekwencji ucieczki w pierwszej kolejności). –

+0

, który wygląda jak plugin XRegExp unicode. jeśli tak, to będzie to alfanumeryczny w dowolnym języku – Tim

Powiązane problemy