在 Perl 中,使用正则表达式对字符串执行替换并将值存储在不同变量中而不更改原始值的好方法是什么?
我通常只是将字符串复制到一个新变量,然后将其绑定到s///对新字符串进行替换的正则表达式,但我想知道是否有更好的方法来做到这一点?
s///
$newstring = $oldstring; $newstring =~ s/foo/bar/g;
这是我一直用来在不更改原始字符串的情况下获取字符串的修改副本的习语:
(my $newstring = $oldstring) =~ s/foo/bar/g;
在 perl 5.14.0 或更高版本中,您可以使用新的/r 非破坏性替换修饰符:
/r
my $newstring = $oldstring =~ s/foo/bar/gr;
注意: 上述解决方案g也适用。它们也适用于任何其他修饰符。
g
还请参见 perldoc perlrequick::Perl 正则表达式快速入门
perldoc perlrequick