Perl正则表达式从替换返回匹配

 mobiledu2502869423 发布于 2023-02-09 10:19

我试图同时删除并存储(到一个数组)字符串中的一些正则表达式的所有匹配.要将字符串中的匹配项返回到数组中,您可以使用

my @matches = $string=~/$pattern/g;

我想对替换正则表达式使用类似的模式.当然,一个选择是:

my @matches = $string=~/$pattern/g;
$string =~ s/$pattern//g;

但是如果没有在整个字符串上运行两次正则表达式引擎,真的没有办法做到这一点吗?就像是

my @matches = $string=~s/$pattern//g

除了这将只返回子数,不管列表上下文.作为一个安慰奖,我还会采用一种方法来使用qr //我可以简单地将引用的正则表达式修改为子正则表达式,但我不知道这是否可能(并且这不会妨碍搜索相同的字符串两次).

1 个回答
  • 也许以下内容会有所帮助:

    use warnings;
    use strict;
    
    my $string  = 'I thistle thing am thinking this Thistle a changed thirsty string.';
    my $pattern = '\b[Tt]hi\S+\b';
    
    my @matches;
    $string =~ s/($pattern)/push @matches, $1; ''/ge;
    
    print "New string: $string; Removed: @matches\n";
    

    输出:

    New string: I   am    a changed  string.; Removed: thistle thing thinking this Thistle thirsty
    

    2023-02-09 10:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有