Java REGEX代码验证印度语言字符不起作用?

时间:2013-05-02 10:09:54

标签: java regex unicode utf-8

为什么下面的代码与印度语言不起作用(导致错误)?

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角色?

1 个答案:

答案 0 :(得分:4)

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

System.out.println("स्वागत".matches("[\\pL\\pM]+"));