java - 这个带有捕获组和反向引用的正则表达式在 Java 中如何匹配?

标签 java regex

我很难理解某个 Java 正则表达式会匹配什么:

"<(\\w+)></\\1>"

我已通读 http://docs.oracle.com/javase/tutorial/essential/regex/

但我仍然无法弄清楚该表达式将匹配什么,尤其是 \1部分。我可以看到 <(\w+)>是匹配任何单词的所有格量词,但我不明白为什么要使用 ()根据教程,这是为了匹配一个组。

至于第二部分,就是不知道是什么\1会匹配。我用

试过了
"001123344556678899".replaceAll("\\1", ""); 

因为我认为它可能只匹配一个数字,但它把我的字符串还给了我,因为什么都没有被替换。

最佳答案

它旨在匹配成对的 XML/HTML 标记,例如

<tag></tag>

\\1表示匹配到第一个匹配的组,即括号中的东西。 (双反斜杠是因为反斜杠需要在 Java 字符串文字中进行转义。)

关于java - 这个带有捕获组和反向引用的正则表达式在 Java 中如何匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231230/

相关文章:

javascript - 相同的正则表达式在 Java 和 JavaScript 中有不同的结果

c++ - 同时使用 std::regex,定义的行为?

java - "Tag start is not closed"在 XML 元素的开始和结束标记内注释时

java - flash() OutputStreamWriter 对网络的副作用

java - 如何在eclipse中使用xml序列化的xstream

regex - 单词边界的正则表达式是什么?

regex - 如何在postgresql中使用正则表达式获取特定数据

java - 写入文件并每次追加

java - JOptionPane.showMessageDialog 的可选替代方案

python - 直接在反向引用之后的数值