Heim  >  Artikel  >  Backend-Entwicklung  >  Wie ordne ich mehrzeilige Textblöcke mit regulären Python-Ausdrücken zu: Klein- und Großbuchstaben erfassen?

Wie ordne ich mehrzeilige Textblöcke mit regulären Python-Ausdrücken zu: Klein- und Großbuchstaben erfassen?

DDD
DDDOriginal
2024-10-25 09:56:28414Durchsuche

How to Match Multiline Text Blocks with Python Regular Expressions: Capturing Lowercase and Uppercase Components?

Mehrzeilige Textblöcke mit regulären Python-Ausdrücken abgleichen

In dieser Programmierfrage wollen wir ein bestimmtes Textformat abgleichen, das sich über mehrere Zeilen erstreckt . Der Eingabetext besteht aus abwechselnden Blöcken aus Klein- und Großbuchstaben, wobei der Kleinbuchstabentext eine Basiskomponente und der Großbuchstabentext eine Sequenz von Aminosäuren darstellt.

Problemstellung

Die Aufgabe besteht darin, einen regulären Ausdruck in Python zu erstellen, der zwei Komponenten aus dem Eingabetext erfassen kann:

  1. Die Basis-Kleinbuchstabenkomponente
  2. Die Folge von Großbuchstaben, die zwei erscheint Zeilen darunter

Die Ausgabe sollte in zwei Erfassungsgruppen unterteilt werden, mit der Basis-Kleinbuchstabenkomponente in Gruppe (1) und der Großbuchstabensequenz in Gruppe (2).

Lösung

Um dieses Problem zu lösen, können wir den folgenden regulären Ausdruck verwenden:

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

Dieser reguläre Ausdruck arbeitet im mehrzeiligen Modus, was bedeutet, dass die ^- und $-Anker mit dem übereinstimmen Anfang und Ende der Zeilen.

Erklärung

  • ^(. )$: Entspricht der Basis-Kleinbuchstabenkomponente allein Zeile.
  • n((?:n. ) ): Entspricht aufeinanderfolgenden Zeilen mit Großbuchstaben, die auf die Basiskomponente folgen.

    • n: Entspricht einem Zeilenvorschubzeichen.
    • (?:n. ) : Eine nicht erfassende Gruppe, die einem oder mehreren Vorkommen eines Zeilenvorschubs gefolgt von einem oder mehreren Nicht-Leerzeichen ( ) entspricht.

Verwendung

Um diesen regulären Ausdruck zu verwenden, können Sie die folgenden Schritte ausführen:

import re

text = """
some Varying TEXT
...
[lines of uppercase text]
...
"""

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

match = regex.search(text)
if match:
    lowercase_text = match.group(1)
    uppercase_text = match.group(2)
    # Process the captured text as needed

Das obige ist der detaillierte Inhalt vonWie ordne ich mehrzeilige Textblöcke mit regulären Python-Ausdrücken zu: Klein- und Großbuchstaben erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn