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)
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>
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)
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!