我有以下代码片段:
private static final Pattern ESCAPER_PATTERN = Pattern.compile("[^a-zA-Z0-9\\p{P}\\s]*");
/**
* @param args
*/
public static void main(String[] args)
{
String unaccentedText = "Aa123 \\/*-+.=+:/;.,?u%µ£$*^¨-)ac!e§('\"e&€#²³~´][{^";
System.out.println(ESCAPER_PATTERN.matcher(unaccentedText).replaceAll(""));
}
Run Code Online (Sandbox Code Playgroud)
当我用JDK 7执行它时,我得到的输出是:
Aa123 \/*-.:/;.,?u%*-)ac!e('"e][{
当我用JDK 8执行相同的操作时,我得到的输出是:
Aa123 \/*-.:/;.,?u%*-)ac!e§('"e][{
请注意,JDK 8不会删除节标记§.
请让我知道在JDK 8的情况下使用的正则表达式以匹配部分符号 - 以及jdks之间行为差异的原因.