我们有一个当前的方法可以清除不是字母或空格的字符,只是
String clean(String input)
{
return input==null?"":input.replaceAll("[^a-zA-Z ]","");
}
确实应该修复以支持非英语字符(例如ś,ũ,......)。不幸的是java正则表达式类(例如
“\ W” - 一个非单词字符,
“\ p {Alpha}” - 仅限-US-ASCII}。 )似乎不支持这一点。有没有办法用java正则表达式来做这个,而不是手动循环每个字符来测试它?
答案 0 :(得分:2)
Java 6 Pattern处理Unicode,请参阅this doc。
Unicode转义序列,如 \ u2014在Java源代码中 按照§3.3中的描述进行处理 Java语言规范。这样 还实现了转义序列 直接由正则表达式 解析器,以便Unicode转义可以 用于从中读取的表达式 文件或键盘。就这样 字符串“\ u2014”和“\\ u2014”,而 不相等,编译成相同的 模式,匹配角色 十六进制值为0x2014。
Unicode块和类别 用\ p和\ P结构编写 就像在Perl中一样。 \ p {prop}匹配如果 输入具有属性prop,而 如果输入,则P {prop}不匹配 有那个属性。块是 使用前缀In指定,如 InMongolian。类别可能是 使用可选前缀Is指定: \ p {L}和\ p {IsL}都表示 Unicode字母的类别。块 和类别可以在里面使用 在一个角色类之外。