Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich ein kompaktes, nicht gieriges Matching in Python-Regexes erreichen?
Kompaktes, nicht gieriges Matching in Python-Regexes
Berücksichtigen Sie die Notwendigkeit eines Regex-Matches, das den kleinstmöglichen Teil einer Zeichenfolge erfasst. Wie kann Pythons standardmäßiger gieriger Ansatz, der den maximalen Teilstring erfasst, korrigiert werden?
Die Lösung liegt im nicht gierigen Matching-Operator ?, der Python anweist, den zu erfassen minimale Textmenge möglich. Um seine Vielseitigkeit zu veranschaulichen, betrachten Sie den regulären Ausdruck „(.)“, der auf die Zeichenfolge „a (b) c (d) e“ angewendet wird. Normalerweise würde es „b) c (d“ erfassen und den gesamten verschachtelten Ausdruck umfassen.
Durch die Verwendung des nicht gierigen Qualifizierers ? wird jedoch der modifizierte reguläre Ausdruck „(.?)“ verwendet. " erfasst stattdessen das gewünschte „b“. Dies liegt daran, dass ?* Python anweist, so wenig Text wie möglich abzugleichen und der unmittelbaren Übereinstimmung von „b“ Vorrang einzuräumen. anstatt auf die größere Gruppe auszudehnen.
In der offiziellen Python-Dokumentation zu Greedy versus Non-Greedy heißt es, dass Non-Greedy-Qualifizierer „so wenig Text wie möglich übereinstimmen“, wenn sie vor dem Dilemma stehen, einen Teilstring zu erfassen Bei optimaler Kürze erweist sich der nicht gierige Operator ?* als die ultimative Lösung, die eine prägnante und effiziente Regex ermöglicht Ausdrücke.
Das obige ist der detaillierte Inhalt vonWie kann ich ein kompaktes, nicht gieriges Matching in Python-Regexes erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!