2013-05-03 68 views
0

爲什麼正則表達式\pL+\pM+不適用於英語?爲什麼正則表達式 pL + pM +不適用於英語?

爲什麼下面的第一個例子結果是錯誤的,其中第二個結果是真的?

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+")); 

基本上我需要一個正則表達式來限制僅Unicode字符(在世界上任何語言)中的字符串

+0

「只有unicode字符」?這是沒有意義的。如果你用UTF-8編碼你的字符串,它將只有Unicode字符。 – 2013-05-03 10:37:17

回答

1

你想

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

你的正則表達式需要標記(\PM+),而你只想要允許它。還要注意錨點。

在一般說明:我建議使用Unicode字符屬性的長形式。它使表達更具可讀性。

相關問題