Mehrzeilige Textblöcke mit regulären Ausdrücken in Python abgleichen
In Python kann der Regex-Abgleich beim Umgang mit mehrzeiligem Text eine Herausforderung darstellen . Betrachten Sie zum Beispiel den folgenden Text, bei dem „n“ einen Zeilenumbruch darstellt:
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 Elemente zu erfassen:
Frühere Versuche mit Variationen der folgenden regulären Ausdrücke wurden durchgeführt erfolglos:
re.compile(r"^>(\w+)$$(\[.$]+)^$", re.MULTILINE) re.compile(r"(^[^>]\[\w\s]+)$", re.MULTILINE|re.DOTALL)
Lösung:
Um den mehrzeiligen Text korrekt abzugleichen, verwenden Sie den folgenden regulären Ausdruck:
re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
Dies Das Muster stimmt mit Folgendem überein:
Wichtige Punkte:
Alternative Lösung:
Wenn der Zieltext neben Zeilenvorschüben (n) auch andere Arten von Zeilenumbrüchen enthalten kann, verwenden Sie die folgende umfassendere Version:
re.compile(r"^(.+)(?:\n|\r\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)
Das obige ist der detaillierte Inhalt vonWie ordne ich mehrzeilige Textblöcke mit regulären Ausdrücken in Python zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!