Wortgrenzen und Sonderzeichen in Python
Bei Verwendung des b-Musters für den Wortgrenzenabgleich in regulären Python-Ausdrücken können unerwartete Ergebnisse auftreten, wenn Das Suchmuster enthält Sonderzeichen wie Klammern oder Klammern.
Konkret stimmt b nur mit Wortgrenzen überein, bei denen das nächste Zeichen ein Wortzeichen ist (alphanumerisch oder Unterstrich). Das bedeutet, dass bSortesindex[persons]{Sortes} beispielsweise nicht mit dem Testtext Sortesindex[persons]{Sortes} übereinstimmt, da nach Sortes ein Sonderzeichen (}index) steht.
Um sicherzustellen, dass a Um die richtige Übereinstimmung zu finden, ziehen Sie diese Lösungen in Betracht:
Adaptive Word Grenzen:
Verwenden Sie adaptive Wortgrenzen, die am Anfang oder Ende einer Zeichenfolge oder zwischen Zeichen mit unterschiedlichem Wortzeichenstatus übereinstimmen:
re.search(r'(?:(?!\w)|\b(?=\w)){}(?:(?<=\w)\b|(?<!\w))'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Eindeutiges Wort Grenzen:
Verwenden Sie eindeutige Wortgrenzen, um auf beiden Seiten der Übereinstimmung strikt keine Wortzeichen vorzuschreiben:
re.search(r'(?<!\w){}(?!\w)'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Behandeln Sie Nichtwörter explizit Grenzen:
Behandeln Sie Nicht-Wortgrenzen explizit mit W oder $, wie zum Beispiel:
re.search(r'\b' + re.escape('Sortes\index[persons]{Sortes}') + '(\W|$)', 'test Sortes\index[persons]{Sortes} test')
Erwägen Sie außerdem die Verwendung negativer Lookarounds für mehr Flexibilität bei der Definition von Wortgrenzen. Beispielsweise schlägt (?
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe der Wortgrenzen von Python zuverlässig Zeichenfolgen mit Sonderzeichen abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!