java - 为什么这两个 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 8Pattern
中,类不会覆盖equals
. 所以它使用默认实现来检查引用是否指向内存中的相同位置。
推荐阅读
- nginx - 有时 502 Bad Gateway ,有时 504 网关超时,有时网站加载成功
- docker - 如何在非 SUSE 主机操作系统上的 SUSE 容器中运行 zypper 命令(如果可能的话?)
- react-native - 如何在启用滑动的情况下使用 createMaterialTopTabNavigator 时使用水平滚动视图,REACT NATIVE
- java - 这个 Jakarta Mail 代码究竟加密了什么,为什么收到的电子邮件被标记为未验证?
- c++ - 了解新的编码技术
- c# - Double Relation One to Many (different Property same Class), Unable to determine the relationship represented by navigation, C#
- python - 使用 pyspark 从 JSON DF 数组中删除选择性 JSON
- python - 如何过滤来自 django 网站的草稿内容?
- bash - for循环不同的%变量(跨不同的操作系统)
- angular - 前端的身份