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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么这两个java.util.Pattern不相等相关的知识,希望对你有一定的参考价值。

我有两个使用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));
答案

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

以上是关于为什么这两个java.util.Pattern不相等的主要内容,如果未能解决你的问题,请参考以下文章

QT+创建两个不相干的窗口实现一个显示一个不显示

问题 E: 不打不相识

人性的复杂,道不同不相为谋!

计算机软件基础如何理解鲁棒性Robust?

指针&数组

Java 集合和映射表