„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie ordne ich mehrzeilige Blöcke in Python mithilfe regulärer Ausdrücke zu?

Wie ordne ich mehrzeilige Blöcke in Python mithilfe regulärer Ausdrücke zu?

Veröffentlicht am 04.11.2024
Durchsuche:737

How to Match Multiline Blocks in Python Using Regular Expressions?

Mehrzeilige Blöcke mit regulären Ausdrücken abgleichen

Beim Abgleich mit Text, der sich über mehrere Zeilen erstreckt, können mit den regulären Ausdrücken von Python Schwierigkeiten auftreten. Betrachten Sie den folgenden Beispieltext:

some Varying TEXT

DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF
[more of the above, ending with a newline]
[yep, there is a variable number of lines here]

(repeat the above a few hundred times).

Das Ziel besteht darin, zwei Komponenten zu erfassen:

  • "einiger variierender TEXT"
  • Alle Großbuchstaben befinden sich in zwei Zeilen darunter (ohne alle Zeilenumbrüche)

Mehrere Versuche wurden erfolglos unternommen:

re.compile(r"^>(\w )$$(\n[.$] )^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s] )$", re.MULTILINE|re.DOTALL) # Just textlines

Um dieses Problem zu beheben, verwenden Sie den folgenden regulären Ausdruck:

re.compile(r"^(. )\n((?:\n. ) )", re.MULTILINE)

Denken Sie daran, dass Anker „^“ und „$“ stimmt nicht mit Zeilenumbrüchen überein. Daher folgt im mehrzeiligen Modus „^“ einem Zeilenumbruch und „$“ geht einem Zeilenumbruch voran.

Achten Sie außerdem auf verschiedene Zeilenumbruchformate. Für Text, der Zeilenvorschübe, Wagenrückläufe oder beides enthalten kann, verwenden Sie diesen umfassenderen regulären Ausdruck:

re.compile(r"^(. )(?:\n|\r\n?)((?:(?:\n|\r\n?). ) )", re.MULTILINE)

Der Modifikator DOTALL ist hier unnötig, da der Punkt bereits Zeilenumbrüche ausschließt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3