Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich ein kompaktes, nicht gieriges Matching in Python-Regexes erreichen?

Wie kann ich ein kompaktes, nicht gieriges Matching in Python-Regexes erreichen?

Susan Sarandon
Susan SarandonOriginal
2024-11-09 03:05:02534Durchsuche

How Can I Achieve Compact Non-Greedy Matching in Python Regexes?

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!

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