正则表达式中的括号

时间:2016-10-09 15:03:15

标签: regex perl

使用Perl和:

my $s="The Sea! The Sea!"

模式/(.+)\s*\1/The Sea! The Sea!匹配,因为它与后向引用匹配\1

但是,模式/((.+)\s*\1)/The Sea! The Sea!

不匹配

为什么?

1 个答案:

答案 0 :(得分:10)

((.+)\s*\2)

应该有效,因为内部捕获的组已成为#2,因为最外层组被捕获组#1。

请注意,您也可以使用组的相对编号,即

((.+)\s*\g{-1})

\g{-1}与最近捕获的群组匹配的位置。