为什么正则表达式\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 :(得分:1)
你想要
"^[\\p{Letter&}\\p{Mark}]+$"
你的正则表达式需要一个标记(\PM+
),而你只想允许它。还要注意锚点。
总的来说:我建议使用长字形的Unicode字符属性。它使表达更具可读性。