Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mithilfe einer nicht gierigen Regex in Python einen bestimmten Teilstring abgleichen, ohne unerwünschte Zeichen einzubeziehen?
Nicht gierige reguläre Ausdrücke in Python
Beim Umgang mit regulären Ausdrücken ist der Standardoperator * gierig, was bedeutet, dass er versucht, möglichst viele Übereinstimmungen zu finden der Eingabe wie möglich. Es gibt jedoch Szenarien, in denen ein nicht gieriger Ansatz erforderlich ist. Dieser Artikel untersucht die Verwendung nicht gieriger regulärer Ausdrücke in Python und konzentriert sich insbesondere auf einen Fall, bei dem das Ziel darin besteht, eine bestimmte Teilzeichenfolge abzugleichen, ohne unerwünschte Zeichen einzuschließen.
Problem
Betrachten Sie die folgende Eingabezeichenfolge: „a (b) c (d) e“
Wenn Sie den standardmäßigen gierigen regulären Ausdruck „(.)“ verwenden, findet Python eine Übereinstimmung mit „b) c (d ". Dies liegt daran, dass den vorhergehenden Ausdruck als null oder mehrmals quantifiziert und das gierige Verhalten dazu führt, dass er so weit wie möglich übereinstimmt.
Lösung
Um den regulären Ausdruck nicht gierig zu machen, verwenden Sie das Qualifikationsmerkmal ?. Dadurch wird Python angewiesen, den Ausdruck so selten wie möglich zu finden, was dazu führt, dass „(.?)“ nur mit „b“ übereinstimmt.
Python-Implementierung
import re input_string = "a (b) c (d) e" non_greedy_regex = r"(.*?)" match = re.search(non_greedy_regex, input_string) if match: print(match.group(1))
Ausgabe:
b
Schlussfolgerung
Das *? Bietet eine bequeme und übersichtliche Möglichkeit, das Verhalten regulärer Ausdrücke in Python zu steuern. Durch die Angabe, dass die Übereinstimmung so kurz wie möglich sein soll, können Sie die gewünschte Teilzeichenfolge präzise angeben, ohne versehentlich unerwünschte Zeichen einzuschließen.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer nicht gierigen Regex in Python einen bestimmten Teilstring abgleichen, ohne unerwünschte Zeichen einzubeziehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!