答案 0 :(得分:3)
不明白为什么你在嵌套的角色类中包含了*
。这只不过是工会,就像使用*
一样好。要匹配unicode字母,您可以使用\p{L}
。
如果你已经使用Java 7,那么你可以使用Pattern.UNICODE_CHARACTER_CLASS
标志或嵌入式标志 - (?U)
和你的模式:
Pattern p = Pattern.compile("^[*\\w&&[^\\d_]]+$", Pattern.UNICODE_CHARACTER_CLASS);
如果您将正则表达式保留为字符串,则使用嵌入式标记:
rule = "(?U)^[*\\w&&[^\\d_]]+$";
答案 1 :(得分:1)
您是否查看了Pattern的文档?
在" Unicode脚本,块,类别和二进制属性的类":
\p{IsAlphabetic} An alphabetic character (binary property)
所以你的模式可能是:
"\\p{IsAlphabetic}+"
答案 2 :(得分:0)
使用matches()
的最短路径:
\\pL+ # no need to add anchors with matches() method
使用find()
的最短路径:
\\PL # stop at the first non letter character
注意:您也可以写\\p{L}
和\\P{L}
,\\pL
和\\PL
是快捷方式。
但是如果你只需要匹配拉丁字符,最好使用:
\\p{isLatin}+