新手请教-反向匹配的一个问题
最近看反向匹配的时候有点迷糊,验证了几个脚本,还是有些迷糊。期待大家提炼语言。脚本如下:
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)是想匹配什么样的?
谢谢。
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
/y(.)(.)\2\1/ 匹配 yabba
作者: zhlong8 发布时间: 2011-06-14
回复 zhlong8
悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。
下面的各位可以继续发言。
悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。
下面的各位可以继续发言。
作者: zhangblueant 发布时间: 2011-06-14
QUOTE:
回复 zhlong8
悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。
下面的各位可以继续发言 ...
zhangblueant 发表于 2011-06-14 23:29
悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。
下面的各位可以继续发言 ...
zhangblueant 发表于 2011-06-14 23:29
/(.)(.)\2/ 对于 /(.) 是 \1 接下来的 (.) 就是 \2 那不就是说是任意字母跟两个相同的字母?左括号只是用来数数字的 \2 指的是第二对括号里面的内容
作者: zhlong8 发布时间: 2011-06-14
QUOTE:
回复 zhlong8
悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。
下面的各位可以继续发言 ...
zhangblueant 发表于 2011-06-14 23:29
悟了点,稍微还有点混乱。理理。。。谢谢这位朋友。
下面的各位可以继续发言 ...
zhangblueant 发表于 2011-06-14 23:29
多看几遍,就明白了
作者: yinyuemi 发布时间: 2011-06-14