11

为什么以下代码不适用于印度语言(导致错误)?

System.out.println(Charset.forName("UTF-8").encode("అనువాద")
                .asCharBuffer().toString().matches("\\p{L}+"));

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

System.out.println(Charset.forName("UTF-8").encode("நல்வரவு")
                .asCharBuffer().toString().matches("\\p{L}+"));

以上所有代码都返回false。这个正则表达式有什么问题?如何验证世界上的任何 unicode 字符?

4

1 回答 1

5

\p{Letter}仅捕获字母,但您还需要标记,您可以使用\p{Mark}.

System.out.println("स्वागत".matches("[\\pL\\pM]+"));
于 2013-05-02T10:39:44.280 回答