Heim  >  Artikel  >  Backend-Entwicklung  >  Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

零到壹度
零到壹度Original
2018-04-02 10:54:073167Durchsuche

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:

Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

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:

Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

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:

Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

Der folgende Code zeigt den Unterschied zwischen dem gierigen Modus und weiter nicht gieriger Modus:

Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

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:

Die Verwendung und der Unterschied zwischen dem Greedy-Modus und dem Non-Greedy-Modus in regulären Python-Ausdrücken

Verwandte Empfehlungen:

Gierige Algorithmussumme in regulären Ausdrücken für die Anwendung eines nicht gierigen Algorithmus in Python

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!

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