Heim > Backend-Entwicklung > Python-Tutorial > Warum verhalten sich die Wortgrenzen regulärer Ausdrücke (\b) bei Sonderzeichen falsch?

Warum verhalten sich die Wortgrenzen regulärer Ausdrücke (\b) bei Sonderzeichen falsch?

Mary-Kate Olsen
Freigeben: 2024-12-09 05:26:17
Original
611 Leute haben es durchsucht

Why Do Regular Expression Word Boundaries (b) Misbehave with Special Characters?

Wortgrenzenverhalten für Ausdrücke mit Sonderzeichen

Bei der Verwendung regulärer Ausdrücke zum Abgleichen von Wörtern kann das B-Grenzenmuster manchmal zu unerwarteten Ergebnissen führen, insbesondere wenn das Wort Sonderzeichen enthält Zeichen.

Betrachten Sie den Ausdruck „test Sortesindex[persons]{Sortes} text.“ Durch den Abgleich der vollständigen Phrase mit bb sollten Übereinstimmungen nur mit Phrasen wie „Sortes“ verhindert werden. Aufgrund bestimmter Merkmale von Wortgrenzen tritt dies jedoch nicht auf.

b Verhalten mit Sonderzeichen

Formell entspricht b der Grenze zwischen einem Wortzeichen (w) und einem Nichtwortzeichen (W) oder der Anfang/das Ende der Zeichenfolge. Wenn auf das Wortgrenzenmuster unmittelbar ein Sonderzeichen wie [ oder } folgt, erfordert das b nur ein Wortzeichen nach dem Sonderzeichen.

Lösung: Adaptive oder eindeutige Wortgrenzen

Zur Adressierung In diesem Fall können adaptive Wortgrenzen oder eindeutige Wortgrenzen verwendet werden.

Adaptive Wortgrenzen verarbeiten jede Kombination davon Wort- und Nichtwortzeichen auf beiden Seiten des Musters:

re.search(r'(?:(?!\w)|\b(?=\w)){}(?:(?<=\w)\b|(?<!\w))'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Nach dem Login kopieren

Eindeutige Wortgrenzenerfordern keine Wortzeichen auf beiden Seiten des Musters:

re.search(r'(?<!\w){}(?!\w)'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Nach dem Login kopieren

Auswahl des richtigen Grenztyps

Adaptive Wortgrenzen sind vielseitiger, erlauben aber führende und nachfolgende Nicht-Wort-Zeichen. Eindeutige Wortgrenzen sind strenger und stellen sicher, dass es keine umgebenden Wortzeichen gibt.

Anpassung

Die für adaptive und eindeutige Wortgrenzen verwendeten Lookaround-Muster können basierend auf den spezifischen Anforderungen der Matching-Aufgabe angepasst werden. Um beispielsweise nur Nicht-Buchstaben rund um das Muster abzugleichen, verwenden Sie [^Wd_] anstelle von w.

Das obige ist der detaillierte Inhalt vonWarum verhalten sich die Wortgrenzen regulärer Ausdrücke (\b) bei Sonderzeichen falsch?. 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