Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mithilfe einer nicht gierigen Regex in Python einen bestimmten Teilstring abgleichen, ohne unerwünschte Zeichen einzubeziehen?

Wie kann ich mithilfe einer nicht gierigen Regex in Python einen bestimmten Teilstring abgleichen, ohne unerwünschte Zeichen einzubeziehen?

DDD
DDDOriginal
2024-11-09 19:10:02991Durchsuche

How do I match a specific substring without including unwanted characters using non-greedy regex in Python?

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!

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