新手请教-反向匹配的一个问题

最近看反向匹配的时候有点迷糊,验证了几个脚本,还是有些迷糊。期待大家提炼语言。脚本如下:
1.
#!/usr/bin/perl
use strict;
$_="abab";
if(/(.)(.)\2/){
print "it matched!\n";
}else{
                print "do not match!\n";
        }
       
这个脚本执行之后是do not match

2.

#!/usr/bin/perl

use strict;
$_="aab";
if(/(.)(.)\2/){
print "it matched!\n";
}else{
                print "do not match!\n";
        }
这个脚本执行之后是do not match

3.

#!/usr/bin/perl

use strict;
$_="aabb";
if(/(.)(.)\2/){
print "it matched!\n";
}else{
                print "do not match!\n";
        }
这个脚本执行之后是it matched!       

\2还可以用\g{2}来代替。

想问的是:
\2或者\g{2} 理解应该是匹配第二个左括号内容的,但是通过验证结果有点说不通。

1.不知道是不是想复杂了。期待大家指点正则表达式中\2或者\g{2} 的规则?

2.例如:
(/y(.)(.)\2\1)是想匹配什么样的?

谢谢。

作者: zhangblueant   发布时间: 2011-06-14

/(.)(.)\2/ 匹配  abb 这样的内容
/y(.)(.)\2\1/ 匹配 yabba

作者: zhlong8   发布时间: 2011-06-14

回复 zhlong8


    悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。

   下面的各位可以继续发言。

作者: zhangblueant   发布时间: 2011-06-14



QUOTE:
回复  zhlong8


    悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。

   下面的各位可以继续发言 ...
zhangblueant 发表于 2011-06-14 23:29




    /(.)(.)\2/ 对于 /(.) 是 \1  接下来的 (.) 就是 \2 那不就是说是任意字母跟两个相同的字母?左括号只是用来数数字的 \2 指的是第二对括号里面的内容

作者: zhlong8   发布时间: 2011-06-14



QUOTE:
回复  zhlong8


    悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。

   下面的各位可以继续发言 ...
zhangblueant 发表于 2011-06-14 23:29


多看几遍,就明白了

作者: yinyuemi   发布时间: 2011-06-14