我尝试同时删除和存储某个字符串中所有匹配的正则表达式。 要将字符串中的匹配返回到数组中,可以使用
my @matches = $string=~/$pattern/g;
我希望能够使用类似的模式来进行替换正则表达式。当然,其中一种选项是:
my @matches = $string=~/$pattern/g;
$string =~ s/$pattern//g;
但是是否真的没有办法在不让正则表达式引擎两次扫描完整个字符串的情况下完成这个操作呢?类似于
my @matches = $string=~s/$pattern//g
除此之外,这仅会返回订阅数,而不考虑列表上下文。作为安慰奖,我也会采用使用qr//的方法,在其中可以简单地修改引用的正则表达式为子正则表达式,但我不知道是否可能实现(这也不能排除两次搜索同一字符串的可能)。
$string
和$pattern
与编写eval $program
相比,几乎没有什么用处。 - Borodin