Heim > Artikel > Backend-Entwicklung > Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken
Reguläre Ausdrücke gibt es nicht nur in Python, sondern sind ein unabhängiger Syntaxsatz, der von vielen Programmiersprachen unterstützt wird. Die in verschiedenen Sprachen verwendete Syntax für reguläre Ausdrücke ist nicht genau gleich, aber im Allgemeinen ähnlich. Dieser Artikel konzentriert sich auf die Verwendung und den Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus. Standardmäßig werden reguläre Ausdrücke entsprechend dem Greedy-Modus abgeglichen, d. h., um so viel Inhalt wie möglich abzugleichen. Beispiel:
Im obigen Code bedeutet das erste b im regulären Ausdruck, dass es mit dem Wortanfang übereinstimmt, gefolgt vom Buchstaben b. was bedeutet, dass Wörter übereinstimmen, die mit dem Buchstaben „b“ beginnen, gefolgt von einem Punkt. Es bedeutet, dass jedes Zeichen (einschließlich Leerzeichen) übereinstimmt, dann bedeutet das Pluszeichen +, dass jedes vorangehende Zeichen ein oder mehrere Male vorkommt, und das letzte „b“ bedeutet, dass es mit dem Ende von übereinstimmt das Wort. Die Frage ist also: Was zählt als Ende eines Wortes? Leerzeichen und Satzzeichen werden beide als Wortendungen gezählt, aber reguläre Ausdrücke verwenden standardmäßig den Greedy-Modus, der so viel Inhalt wie möglich abgleichen soll, sodass der obige Code mit der letzten Wortendung im Text übereinstimmt. Wie im Bild gezeigt:
Wie können wir dann nur Wörter zuordnen, die mit dem Buchstaben b beginnen, anstatt wie oben? Der Non-Greedy-Modus kann verwendet werden. Der nicht gierige Modus wird mit dem Fragezeichen „?“ vervollständigt. Wenn im regulären Ausdruck dem Fragezeichen ein gewöhnliches Zeichen oder Untermuster vorangestellt ist, bedeutet dies, dass das Zeichen oder Untermuster vor dem Fragezeichen oder sein kann wird möglicherweise nicht angezeigt. Wenn das Fragezeichen jedoch auf Inhalte wie +, * und {m,n} folgt, weist es auf einen nicht gierigen Modus hin, d. h. auf die Übereinstimmung mit so wenig Inhalt wie möglich. Nehmen Sie das obige Problem als Beispiel und wechseln Sie zum Beispiel in den nicht gierigen Modus:
Der folgende Code zeigt den Unterschied zwischen dem gierigen Modus und weiter nicht gieriger Modus:
Natürlich zurück zur ursprünglichen Frage dieses Artikels, wenn Sie nur Wörter zuordnen möchten, die mit dem Buchstaben b beginnen , müssen Sie sich nicht so viel Mühe geben und verwenden Sie einfach w. Das ist in Ordnung, weil w nur Buchstaben, Zahlen oder Unterstriche finden kann, keine Leerzeichen. Zum Beispiel:
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonDie Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!