为什么这两个java.util.Pattern不相等

时间:2018-08-30 18:38:58

标签: java regex pattern-matching

我有两个使用java.util.regex.Pattern.compile的正则表达式。第一个是:

input[\\s\\w=:'\\-"]*type\\s*=\\s*['"]password['"];

第二个是:

input[\\s\\w=:'\\-\\\"]*type\\s*=\\s*['\\\"]password['\\\"];

这两个正则表达式之间的唯一区别是在后一个字符串中转义了双引号。 “和\”指的是相同的ASCII字符“,因此它们获得相同的匹配结果。

但是,当我执行以下代码时,它返回False。

Pattern p1=Pattern.compile("input[\\s\\w=:'\\-"]*type\\s*=\\s*['"]password['"]");
Pattern p2=Pattern.compile("input[\\s\\w=:'\\-\\\"]*type\\s*=\\s*['\\\"]password['\\\"]");
System.out.println(p1.equals(p2));

1 个答案:

答案 0 :(得分:3)

在Java 8中,nb.html类不会覆盖Pattern。因此,它使用默认实现,该实现检查引用是否指向内存中的相同位置。