为什么我的 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 通常是用于此目的的值。

相关内容