0

为什么正则表达式\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 字符(世界上的任何语言)

4

1 回答 1

1

你要

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

您的正则表达式需要一个标记 ( \PM+),而您只想允许它。还要注意锚点。

一般注意事项:我建议使用 Unicode 字符属性的长形式。它使表达式更具可读性。

于 2013-05-03T06:33:52.417 回答