0

\pL+\pM+正規表現が英語で機能しないのはなぜですか?

以下の最初の例の結果が false で、2 番目の例の結果が true になるのはなぜですか?

System.out.println(Charset.forName("UTF-8").encode("suren") 
                .asCharBuffer().toString().matches("\\PL+\\PM+"));

System.out.println(Charset.forName("UTF-8").encode("स्वागत") 
                .asCharBuffer().toString().matches("\\PL+\\PM+"));

基本的に、文字列内のユニコード文字 (世界中の任意の言語) のみを制限するには、正規表現が必要です。

4

1 に答える 1

1

あなたがしたい

"^[\\p{Letter&}\\p{Mark}]+$"

正規表現にはマーク ( )が必要ですが、許可するだけです。アンカーにも注意してください。\PM+

一般的な注意事項: Unicode 文字プロパティの長い形式を使用することをお勧めします。式が読みやすくなります。

于 2013-05-03T06:33:52.417 に答える