1. ホーム
  2. regex

[解決済み] 元の文字列を維持したままPerlの置換を行うにはどうすればよいですか?

2022-04-18 05:48:31

質問

Perlで、正規表現を使って文字列の置換を行い、元の値を変えずに別の変数に値を格納する良い方法は何でしょうか?

私は通常、文字列を新しい変数にコピーして、その変数を s/// しかし、これを行う良い方法があるでしょうか?

$newstring = $oldstring;
$newstring =~ s/foo/bar/g;

解決方法は?

これは、私がいつも使っているイディオムで、元の文字列を変更せずに、変更したコピーを取得するためのものです。

(my $newstring = $oldstring) =~ s/foo/bar/g;

perl 5.14.0以降では、新しく追加された /r 非破壊的置換モディファイア :

my $newstring = $oldstring =~ s/foo/bar/gr; 


NOTE

上記の解決策は g もあります。また、他の修飾子でも動作します。

他にもあります。

perldoc perlrequick : Perl正規表現クイックスタート