我很难理解某个 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/