Heim >Backend-Entwicklung >Python-Tutorial >Warum findet mein Python „re.search()' keine Wortgrenzen mit „\b'?
Wortgrenzen (b) Unterstützung in regulären Ausdrücken
In Python können reguläre Ausdrücke verwendet werden, um Muster innerhalb von Zeichenfolgen zu finden und abzugleichen. Beim Erkunden regulärer Ausdrücke ist Ihnen vielleicht ein Vorschlag aufgefallen, den b-Ausdruck zu nutzen, um Wortgrenzen anzupassen. Es gibt jedoch Fälle, in denen dieser Ansatz zu unerwarteten Ergebnissen führen kann.
Das Problem
Bedenken Sie das folgende Python-Snippet:
x = 'one two three' y = re.search("\btwo\b", x)
Erwartungsgemäß Dieser Code sollte ein Übereinstimmungsobjekt zurückgeben, wenn eine Übereinstimmung innerhalb der Zeichenfolge gefunden wird. Überraschenderweise wird jedoch „None“ zurückgegeben. Dies wirft die Frage auf: Unterstützt das Python-Re-Modul nicht die Verwendung von b zum Abgleichen von Wortgrenzen?
Die Lösung
Das Problem im angegebenen Snippet liegt in der Verwendung einer regulären Zeichenfolge. Damit reguläre Ausdrücke ordnungsgemäß funktionieren, ist es wichtig, Rohzeichenfolgen zu verwenden. Rohzeichenfolgen werden dadurch gekennzeichnet, dass der Zeichenfolge ein „r“ vorangestellt wird, wie unten dargestellt:
x = 'one two three' y = re.search(r"\btwo\b", x)
Das Ändern der Zeichenfolge in eine Rohzeichenfolge behebt das Problem und der Code gibt erfolgreich ein Übereinstimmungsobjekt zurück.
Alternativer Ansatz
Ein alternativer Ansatz zum Anpassen von Wortgrenzen ist die Verwendung von re.compile() Funktion. Mit dieser Funktion können Sie ein reguläres Ausdrucksobjekt definieren, das für mehrere Suchvorgänge wiederverwendet werden kann, was möglicherweise die Effizienz steigert.
word = 'two' k = re.compile(r'\b%s\b' % word, re.I) x = 'one two three' y = k.search(x)
In diesem Fall stellt die Variable k das kompilierte reguläre Ausdrucksobjekt dar und y enthält die Übereinstimmung Objekt. Die Verwendung von re.compile() bietet Flexibilität und Leistungsvorteile und ist daher eine geeignete Wahl für komplexe Szenarios mit regulären Ausdrücken.
Das obige ist der detaillierte Inhalt vonWarum findet mein Python „re.search()' keine Wortgrenzen mit „\b'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!