為什麼我的 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 是通常用於此目的的值。

相關內容