小编Pri*_*ath的帖子

java 8中的Pattern.matcher与sectionsign§不匹配§

我有以下代码片段:

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之间行为差异的原因.

regex java-8

2
推荐指数
1
解决办法
628
查看次数

标签 统计

java-8 ×1

regex ×1