许多现代正则表达式实现将\w字符类简写解释为"任何字母,数字或连接标点符号"(通常为下划线).这样一来,像一个正则表达式\w+像火柴的话hello,élève,GOÄ_432或gefräßig.
不幸的是,Java没有.在Java中,\w仅限于[A-Za-z0-9_].这使得像上述那些匹配的单词难以解决.
似乎\b单词分隔符在不应该的位置匹配.
什么是类似.NET,Unicode感知\w或\bJava 的正确等价物?哪些其他快捷方式需要"重写"以使其具有Unicode感知功能?
我想检测Unicode Letters(\p{L})的单词.
Scala的REPL给出false了以下语句,而在Java中它是true(这是正确的行为):
java.util.regex.Pattern.compile("\\p{L}").matcher("ä").matches()
Java和Scala都在JRE 1.7中运行:
System.getProperty("java.version") 回馈 "1.7.0_60-ea"
可能是什么原因?