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

本文介绍Perl中正则表达式的反引用概念及其应用,包括如何在同一正则表达式内部进行引用,以及如何跨正则表达式使用之前捕获的内容实现字符串的替换操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

本神奇的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值