2013-02-15 20 views
54

私は正規表現に新しいですし、次の正規表現が与えられている:正規表現 P {L}と P {N}

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

は私が何を*手段とを知っているし| "or"を意味し、\はエスケープします。

私は何を知りません\p{L}\p{N}を意味します。私は結果なしでそれをGoogle検索しました...

誰かが私を助けることができますか?

+0

私もそれをGoogleで、私は、[この結果](https://stackoverflow.com/a/14891168/507738)を得ました。 –

答えて

84

\p{L}は、カテゴリ「文字」の1つのコードポイントに一致します。
\p{N}は、任意のスクリプトの任意の種類の数値文字と一致します。

出典:regular-expressions.info

あなたが正規表現で多くのことを仕事するつもりなら、私はそれは非常に便利だサイト、ブックマークをお勧めしたいです。

+0

速い答えのためのthx :)。しかし、正規表現は10にマッチしないはずですか?私はオンラインの正規表現マッチャーを試しました:http://regexpal.com/ – Diemauerdk

+0

@ user1093774:[regexpal](http://regexpal.com/)は '\ p {}'をサポートしているとは思っていませんが、そうです一致するはずです。 – Cerbrus

+1

この構文は現代のUnicode正規表現の実装に特有ですが、すべてのインタプリタが認識するわけではありません。 \ p {L}は{a-zA-Z}(ascii表記)または{\ w}(perl/vim表記)で安全に置き換えることができます。と\ p {N}を{0-9}(ascii)または{\ d}(perl/vim)で置き換えます。 {a-zA-Z0-9} +または{\ w \ d} + –

17

これらは、Unicodeプロパティのショートカットです(Unicode文字の場合は\p{L}、Unicode数字の場合は\p{N})。それらは.NET、Perl、Java、PCRE、XML、XPath、JGSoft、Ruby(1.9以上)、PHP(since 5.1.0)でサポートされています。

いずれにせよ、それは非常に奇妙な正規表現です。文字クラスで十分だろうというときあなたは交代を使用すべきではありません。

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

xmlの正規表現 - 私は正規表現を自分自身でconstrcutedしていません:) – Diemauerdk

+0

キャプチャカッコを使用したこと以外は、REは実際には同じものにコンパイルされます(まあ、 '\ p { ...} '最初にエスケープシーケンススタイル)。 –

+0

は、XRegExp unicode pluginのように見えます。そうであれば、どの言語でも英数字になります – Tim