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

时间:2017-03-10 21:26:03

标签: regex perl

对于一个简单的用例

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

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

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

1 个答案:

答案 0 :(得分:6)

s///运算符(没有/r标志)返回已完成的替换次数,因此您只需执行

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

Reference