Perl 正規表現で改行後の特定の文字列を削除できないのはなぜですか?

Perl 正規表現で改行後の特定の文字列を削除できないのはなぜですか?

次のようなテキストがあります

text
\centering
more text

次のように変換します:

text
more text

Perlの使用

私のコードは次のとおりです:

perl -00 -pe 's/\R+\\centering\R+/\n/g' example.md

全然機能しません!

この方法と私の代替案の両方で

perl -00 -pe 's/\\centering/*/g' example.md

出力を生成する

text
*
more text

そして

perl -00 -pe 's/\R+/\n*/g' example.md

生産する

text
*\centering
*more text

つまり、それらは個別には機能しますが、一緒には機能しません。ここで何を間違っているのでしょうか?

答え1

0レコード区切り文字として使用しないでください。777

perl -0777 -pe 's/\R+\\centering\R+/\n/g' example.md
#      ^^^

希望する結果が得られます。

からドキュメンテーション:

特別な値 00 を指定すると、Perl はファイルを段落モードで読み込みます。値 0400 以上を指定すると、Perl はファイル全体を読み込みますが、慣例により、この目的には値 0777 が通常使用されます。

関連情報