用于替换计数的Perl正则表达式变量

oᴉɹ*_*ǝɥɔ 1 regex perl

对于一个简单的用例就是这个

#!/usr/bin/perl
my $text = "A choice between ASCII and UTF8 is simple";
$text =~ s/[[:upper:]]+/?/g;
Run Code Online (Sandbox Code Playgroud)

我需要确定是否进行了更换.我希望找到一个内置变量来告诉我.看起来有很多可用的变量与正则表达式相关(例如$ 1,... $',$&,@ +,@ - 等)但是我找不到一个可以简单地告诉我是否有替换或者没有或更换的数量等.

当然,我可以保存原始字符串并与结果进行比较,但如果此统计数据已经以某种方式提供,我会使用它.

hob*_*bbs 6

s///运营商(没有/r标志)返回完成更换的次数,所以你可以简单地做

if ($text =~ s/[[:upper:]]+/?/g) {
    # at least one replacement was done
} else {
    # nothing changed
}
Run Code Online (Sandbox Code Playgroud)

参考