スペースで区切ることができる2つの連続した文字列インスタンスを置き換える正規表現

スペースで区切ることができる2つの連続した文字列インスタンスを置き換える正規表現

私は2つの特定の連続した文字列のすべてのインスタンスを置き換えるPerlの1行のコードを書くのが好きです。

john paulたとえば、2つの文字列がおよびで、georgeこの文字列の連続したインスタンスをその順序で置き換えたいとしますpete。 1行のコード実行

$ cat ~/foo

john paulgeorge
john paul george
john paul

    george

george john paul

結果が出なければならない

$ cat ~/foo

pete
pete
pete

george john paul

私の心に浮かぶ唯一のこと

$ perl -p -i -e 's/john paul\s*george/pete/g' ~/foo

しかし、これによって

$ cat ~/foo

pete
pete
john paul

    george

george john paul

私の回線の1つを変更する方法はありますか?

ベストアンサー1

1行のコードに追加する唯一のことは、ファイルを単一の文字列として読み取るオプションです。

perl -0777 -p -i -e 's/john paul\s*george/pete/g' ~/foo
#    ^^^^^

バラよりhttp://perldoc.perl.org/perlrun.html#コマンドスイッチ

おすすめ記事