加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl正则表达式匹配失败

发布时间:2020-12-16 06:25:12 所属栏目:大数据 来源:网络整理
导读:我想匹配两个不同的字符串,输出应该是$1和$2, 根据我在这个例子中,如果$a是’xy abc’,那么$1应该是’xy abc’而$2应该是’abc’,但’abc’部分是3美元. 你能帮我写一个正则表达式,因为1美元应该有整个字符串,2美元应该 有第二部分. 我使用的是perl 5.8.5. m
我想匹配两个不同的字符串,输出应该是$1和$2,
根据我在这个例子中,如果$a是’xy abc’,那么$1应该是’xy abc’而$2应该是’abc’,但’abc’部分是3美元.
你能帮我写一个正则表达式,因为1美元应该有整个字符串,2美元应该
有第二部分.
我使用的是perl 5.8.5.

my @data=('abc xy','xy abc');
foreach my $a ( @data) {
    print "nPattern= $an";
    if($a=~/(abc (xy)|xy (abc))/) {
        print "nMatch: $1>$1< $2>$2< $3>$3<n";
    }
}

输出:

perl test_reg.pl

Pattern= abc xy

Match: $1>abc xy< $2>xy< $3><

Pattern= xy abc

Match: $1>xy abc< $2>< $3>abc<

解决方法

因为只能定义一个捕获$2和$3,所以你可以写

foreach my $item ( @data) {

  print "nPattern= $itemn";

  if ($item=~/(abc (xy)|xy (abc))/) {
    printf "Match: whole>%s< part>%s<n",$1,$2 || $3;
  }
}

它给出了输出

Pattern= abc xy
Match: whole>abc xy< part>xy<

Pattern= xy abc
Match: whole>xy abc< part>abc<

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读