Heim > Backend-Entwicklung > Python-Tutorial > Warum schlägt meine Python-Regex-\b-Wortgrenze fehl und wie kann ich das Problem beheben?

Warum schlägt meine Python-Regex-\b-Wortgrenze fehl und wie kann ich das Problem beheben?

Mary-Kate Olsen
Freigeben: 2024-12-19 10:13:14
Original
346 Leute haben es durchsucht

Why Does My Python Regex b Word Boundary Fail, and How Can I Fix It?

Wortgrenze (b) in regulären Python-Ausdrücken mit re-Modul

Wenn Sie mit regulären Ausdrücken in Python arbeiten und das re-Modul verwenden, können Sie dies tun stoßen auf Verwirrung hinsichtlich des Verhaltens des Wortgrenzenausdrucks (b). Diese Antwort behebt ein häufiges Problem, mit dem Benutzer konfrontiert sind, wenn sie versuchen, Wortgrenzen abzugleichen.

Der b-Ausdruck, der normalerweise zur Identifizierung der Grenze zwischen einem Wort und einem anderen Zeichen verwendet wird, scheint in bestimmten Szenarien fehlzuschlagen. Betrachten Sie das folgende Beispiel:

>>> x = 'one two three'
>>> y = re.search("\btwo\b", x)
Nach dem Login kopieren

Erwartungsgemäß sollte ein Übereinstimmungsobjekt zurückgegeben werden, aber stattdessen ist es None. Dieses verwirrende Ergebnis könnte zu der Frage führen, ob b in Python unterstützt wird.

Das Problem liegt jedoch nicht im b-Ausdruck selbst, sondern in der Zeichenfolge, mit der Sie arbeiten. In Python erfordern Zeichenfolgen, die Backslashes enthalten, eine besondere Behandlung als Escape-Sequenzen. Um dies zu vermeiden, sollten Sie Rohzeichenfolgen verwenden.

>>> x = 'one two three'
>>> y = re.search(r"\btwo\b", x)
>>> y
<_sre.SRE_Match object at 0x100418a58>
Nach dem Login kopieren

Durch Hinzufügen des Präfixes „r“ erstellen Sie eine Rohzeichenfolge, in der Backslashes als Literalzeichen behandelt werden, einschließlich des b-Ausdrucks. Dadurch kann Python die Wortgrenze korrekt anpassen.

Alternativ können Sie auch die Funktion re.compile() verwenden, um ein reguläres Ausdrucksmuster zu erstellen, das das Wort enthält, mit dem Sie übereinstimmen möchten:

word = 'two'
k = re.compile(r'\b%s\b' % word, re.I)
Nach dem Login kopieren

Dieser Ansatz führt zu einem kompilierten Muster, das effizient auf mehrere Zeichenfolgen angewendet oder in komplexen regulären Ausdrucksoperationen verwendet werden kann.

Zusammenfassend lässt sich sagen, dass man unbedingt Rohzeichenfolgen oder ähnliches verwenden muss re.compile()-Funktion für die ordnungsgemäße Verarbeitung von Wortgrenzenausdrücken im re-Modul von Python.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine Python-Regex-\b-Wortgrenze fehl und wie kann ich das Problem beheben?. 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