为什么下面的代码与印度语言不起作用(导致错误)?
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角色?
答案 0 :(得分:4)
\p{Letter}
仅捕获字母,但您还需要标记,您可以使用\p{Mark}
捕获这些标记。
System.out.println("स्वागत".matches("[\\pL\\pM]+"));