欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-29 13:51:31
...

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