Python Non-Greedy Regexes: Die Macht von * entmystifizieren?
Im Bereich der regulären Ausdrücke herrscht Gier an oberster Stelle. Konstrukte wie „.*“ verbrauchen oft so viel Text wie möglich, was zu einer aufgeblähten Übereinstimmung führt. Aber was ist, wenn Sie nach einem chirurgischeren Ansatz suchen und frühe Übereinstimmungen priorisieren?
Die Lösung liegt im Enigmatic *?, einem Modifikator, der einen gierigen regulären Ausdruck in einen nicht gierigen Wächter umwandelt. Dieser unauffällige Platzhalter weist Python an, den kleinsten Teil des Textes zu finden, der zum Muster passt.
Betrachten Sie das Beispiel „a (b) c (d) e“. Ein Standard-Regex „(.)“ würde sich das kräftige „b) c (d“ schnappen. Um dieses übereifrige Verhalten zu zähmen, nutzen Sie die Kraft von ?: „(.*?)“. Jetzt wird Python das tun Halten Sie sich gehorsam an „b“ und lassen Sie den Rest ungestört.
Das *?-Qualifikationsmerkmal geht über bloße Klammern hinaus und ermöglicht Regex-Mustern, jedes Fragment zu erfassen erfüllt die Kriterien und stoppt, wenn die Grenze überschritten wird oder das Muster erschöpft ist.
Wenn Ihre Regex also etwas zurückhaltender sein soll, hängen Sie einfach das magische *?" an. Lassen Sie es Ihre Übereinstimmungen dahingehend leiten ihre wahre Berufung, einen nicht gierigen Schritt nach dem anderen.
Das obige ist der detaillierte Inhalt vonWie kann ich meine regulären Python-Ausdrücke nicht gierig machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!