Warum funktioniert mein Perl-Regex nicht, um bestimmte Zeichenfolgen nach Zeilenumbrüchen zu entfernen?

Warum funktioniert mein Perl-Regex nicht, um bestimmte Zeichenfolgen nach Zeilenumbrüchen zu entfernen?

Ich habe einen Text, der so aussieht

text
\centering
more text

Ich möchte es konvertieren in:

text
more text

Perl verwenden

Mein Code ist:

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

Es funktioniert überhaupt nicht!

Beachten Sie, dass sowohl diese als auch meine Alternative

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

die Ausgabe erzeugen

text
*
more text

Und

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

produziert

text
*\centering
*more text

Sie funktionieren also einzeln, aber nicht zusammen. Was mache ich hier falsch?!

Antwort1

Nicht 0als Datensatztrennzeichen verwenden, es ist bequemer zu verwenden777

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

führt zum gewünschten Ergebnis.

AusDokumentation:

Der spezielle Wert 00 bewirkt, dass Perl Dateien im Absatzmodus slurpt. Jeder Wert 0400 oder höher bewirkt, dass Perl Dateien im Ganzen slurpt, aber laut Konvention wird für diesen Zweck normalerweise der Wert 0777 verwendet.

verwandte Informationen