Heim > Backend-Entwicklung > Python-Tutorial > Warum findet mein Python „re.search()' keine Wortgrenzen mit „\b'?

Warum findet mein Python „re.search()' keine Wortgrenzen mit „\b'?

Linda Hamilton
Freigeben: 2024-12-06 04:13:17
Original
1005 Leute haben es durchsucht

Why Doesn't My Python `re.search()` Find Word Boundaries Using `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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage