正则表达式中反斜线后面的数字是什么意思?

51
(a|b)\1

在这个表达式中,\1 是什么意思?

2个回答

73

\1 - 它表示匹配表达式中的第一个捕获组。\n 将是第n个捕获组。(请注意,\0是整个匹配)。在许多引擎中,n的上限为9,但有些引擎支持高达99。

当在正则表达式中使用类似于 (a|b)\1 的语法时,它表示在 a 或 b 后面,下一个字符应该是第一个捕获的组,即 a 或 b,所以此处的正则表达式将匹配 aabb


2 表示匹配表达式中的第二个组?对吗?3...9 表示匹配表达式中的第三到第九个组? - bitmapdata.com
@bitmapdata.com - 是的。如果有的话。 - manojlds
1
@bitmapdata.com - 你也可以这样做。如果有帮助到你的话,你可以接受它作为答案 :) - manojlds
@TimPietzcker - BF 瞬间。已经更正。 - manojlds
这个功能被称为反向引用;在正则表达式中,反向引用标识先前匹配的组,并再次查找完全相同的文本。 - SAMPro

29

它指的是第一组括号中匹配的内容,也就是第一组。后面的数字表示后续的括号。

(1|2)(3|4)\1\2

会匹配:

1313
1414
2323
2424

请注意,如果您有嵌套的组,请从左括号开始计数。
(groupOne(groupTwo)stillOne(groupThree(groupFour)))

谢谢!^^你也给出了很棒的答案!圣诞快乐^^ - bitmapdata.com
感谢 @bitmapdata.com!祝你圣诞快乐,2012年愉快美好! - sidyll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接