gpt4 book ai didi

regex - Perl 正则表达式从替换中返回匹配项

转载 作者:行者123 更新时间:2023-12-04 23:52:30 25 4
gpt4 key购买 nike

我正在尝试同时删除和存储(到数组中)字符串中某个正则表达式的所有匹配项。
要将匹配项从字符串返回到数组,您可以使用

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

我想对替换正则表达式使用类似的模式。当然,一种选择是:
my @matches = $string=~/$pattern/g;
$string =~ s/$pattern//g;

但是,如果不在整个字符串上运行正则表达式引擎两次,真的没有办法做到这一点吗?就像是
my @matches = $string=~s/$pattern//g

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

最佳答案

也许以下内容会有所帮助:

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

关于regex - Perl 正则表达式从替换中返回匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20688958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com