noel0217 发表于 2017-5-19 07:30:22

神奇的Perl-正则表达式(9)

2.1         反引用

 
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载 
 
同一正则表达式中,反斜杠加上一个整数来表示反引用,用反引用保存正则模式中括号内匹配部分,\1表示匹配到的第一部分,\2表示匹配到的第2部分,从左至右按照每对括号匹配到的字串匹配,以此类推。
例如,取出被一对相同字符串包围的字符串:
my $txt="xab12abz";#"ab"包围了12
if ($txt=~m/(.+)(.+)(\1)/){
   print $2;#输出"12"
}
不在同一个正则表达式,可使用 $ 后边跟一个整数,前面曾经介绍过,在此加深一下理解,我们以字符串中and前后的单词对调为例。
my $txt="hello!  deep and future";#把and前后的单词对调(不包括空格)
$txt=~s/(\S*)\s(\S*)\s(and)\s(\S*)/$1 $4 $3 $2/;
#$1匹配hello!,$2匹配deep,$3匹配and,$4匹配future
print $txt;#输出hello! future and deep
页: [1]
查看完整版本: 神奇的Perl-正则表达式(9)