Ich möchte die Eingabe eines Benutzers als Regex-Muster für die Suche nach Text verwenden. Es funktioniert, aber wie kann ich mit Fällen umgehen, in denen der Benutzer Zeichen mit Bedeutung in Regex einfügt? Beispielsweise möchte der Benutzer nach Word suchen (s)
: Die Regex-Engine nimmt die (s)
als Gruppe. Ich möchte, dass es wie eine Schnur behandelt wird "(s)"
. Ich kann replace
auf Benutzereingabe laufen und das (
mit \(
und das )
mit ersetzen, \)
aber das Problem ist, dass ich für jedes mögliche Regex-Symbol ersetzen muss. Kennst du einen besseren Weg?
repl
Argument fürre.sub
ist eine Zeichenfolge, kein regulärer Ausdruck. sich darauf zu bewerbenre.escape
macht überhaupt keinen Sinn.repl
Argument ist keine einfache Zeichenfolge, es wird analysiert. Zum Beispielre.sub(r'(.)', r'\1', 'X')
wirdX
nicht zurückkehren\1
.repl
Argument zu entkommen : stackoverflow.com/q/49943270/247696Bitte probieren Sie es aus:
\ Q und \ E als Anker
Setzen Sie eine Oder-Bedingung, die entweder einem vollständigen Wort oder einem regulären Ausdruck entspricht.
Ref Link: So passen Sie ein ganzes Wort an, das Sonderzeichen in Regex enthält
quelle