2014-09-22 3 views
17

Ich stolpere über diesen regulären Ausdruck in C# Ich in den Hafen Javascript möchte, und ich verstehe nicht, wie folgt vor:Was bedeutet diese Regexp - " p {Lu}"?

[-.\p{Lu}\p{Ll}0-9]+ 

Der Teil I haben eine harte Zeit mit natürlich \p{Lu}. Alle regexp-Websites, die ich besucht habe, erwähnen diesen Modifikator nie.

Irgendeine Idee?

+3

die Beschreibung auf der rechten Seite in diesem Link sehen http://regex101.com/r/lG2nG9/1 –

+1

http: // www .regular-expressions.info/unicode.html # category – smerny

+1

Immer eine weitere Webseite! danke für regex101, das ist sehr cool. Habe diese Website noch nie gesehen. Post es als Antwort? Oder ich lösche die Frage, wenn es zu offensichtlich ist (aber war nicht für mich) –

Antwort

18

Diese werden als Unicode Eigenschaften betrachtet. Die Unicode-Eigenschaft \p{L} — Kurzschrift für \p{Letter} wird jede Art von Buchstaben aus einer beliebigen Sprache entsprechen. Daher entspricht \p{Lu} einem Großbuchstaben, der eine Kleinbuchstabe-Variante hat. Und das Gegenteil \p{Ll} wird einem Kleinbuchstaben entsprechen, der eine Großbuchstabe-Variante hat.

Prägnant, das jede lowercase/uppercase that has a variant von jeder Sprache passen würde:

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 
+2

könnten Sie erklären, Großbuchstaben, die eine Kleinschreibung hat? Hauptsächlich die "Lowcase-Variante". –

+1

@AvinashRaj Das bedeutet, dass im Unicode-Alphabet ein Zeichen sowohl in Groß- als auch in Kleinbuchstaben gerendert werden kann und nur die Großbuchstabe dieses Buchstabens übereinstimmt. Es bedeutet auch, dass es Großbuchstaben gibt, die keine Kleinbuchstaben haben. – cgTag

+0

Also würde '\ p {L}' möglicherweise mit einigen Zeichen übereinstimmen, die die angegebene Regex nicht hätte? Nämlich diejenigen, die keine Groß- oder Kleinschreibung haben? –