perl-正则变量捕捉

1、使用默认数字捕捉

use 5.010;

my $names='deep and future';

iif ($names=~m/(\w+)  (and|or)  (\w+)/){

    say "I saw $1 and $3";#为什么不是$2,因为一个括号代表可捕捉位置,$2是and|or

}

输出 I saw deep and future

2、使用变量名捕捉

use 5.010;

my $names='deep and future';

iif ($names=~m/((?<pname1>\w+)  (and|or)  (?<pname2>\w+)/){

    say "I saw $+{pname1} and $+{pname2}";

}

3、指定不捕捉某些括号,使用(?:)

use 5.010;

my $names='deep and future';

iif ($names=~m/(\w+)  (?:and|or)  (\w+)/){

    say "I saw $1 and $2";#and|or不捕捉

}

4、使用自动变量匹配

$`表示匹配起始位置之前的字符串

$&表示匹配的内容,即//内的内容

$'表示匹配终结位置之后的内容

use 5.010;

my $names='hello! deep and future';
if ($names=~m/o!\s(\w+)/){
say $`;
say $&;
say $';
say $1;
}

 

输出:

 hell
o! deep
 and future
deep

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值