Python Flucht Regex Sonderzeichen
Funktioniert die Python eine Funktion, die ich verwenden können, um spezielle escape-Zeichen in einem regulären Ausdruck?
Beispielsweise I'm "stuck" :\
werden sollte I\'m \"stuck\" :\\
.
InformationsquelleAutor der Frage Wolfy | 2010-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie re.Flucht
Finden Sie unter : http://docs.python.org/library/re.html#module-contents
Wiederholen es hier:
InformationsquelleAutor der Antwort pyfunc
Ich bin überrascht, niemand hat erwähnt, mithilfe der regulären Ausdrücke über
re.sub()
:Wichtige Dinge zu beachten:
\
sowie den Charakter(en), die Sie suchen.Du wirst mit
\
zu entkommen, Ihre Charaktere, so dass Sie brauchen, um zu entkommendass als gut.
([\"])
so dass die substitutionpattern können die gefundenen Zeichen, wenn es fügt
\
vor. (Das ist, was\1
: verwendet den Wert von der ersten eingeklammerten Gruppe.)r
vorr'([\"])'
bedeutet, es ist ein raw-string. Raw-strings verwenden verschiedeneRegeln für die Flucht backslashes. Schreiben
([\"])
als ein einfacher string, müssten SieDoppel: alle backslashes und schreiben
'([\\"])'
. Raw strings sind freundlicher, wennSie sind reguläre Ausdrücke.
\
zu unterscheiden von einembackslash vorausgeht substitution der Gruppe, z.B.
\1
daherr'\\\1'
. Schreibendass als ein einfacher string, müssten Sie
'\\\\\\1'
— und niemand will, dass.InformationsquelleAutor der Antwort Tim Ruddick
Verwenden repr()[1:-1]. In diesem Fall werden die Anführungszeichen müssen nicht escaped werden. [-1:1] slice ist, entfernen Sie den Apostroph aus der Anfang und das Ende.
Oder vielleicht wollen Sie nur zu entkommen, eine Wendung, fügen Sie in Ihrem Programm? Wenn dem so ist, dies zu tun:
InformationsquelleAutor der Antwort dp_
Wie es oben erwähnt wurde, hängt die Antwort von Ihrem Fall. Wenn Sie wollen, zu entkommen, einen string nach einem regulären Ausdruck dann sollten Sie neu.escape(). Aber wenn Sie wollen, zu entkommen, eine bestimmte Menge von Zeichen, dann verwenden Sie diese lambda-Funktion:
InformationsquelleAutor der Antwort spatar
Es ist nicht so schwer:
InformationsquelleAutor der Antwort poke
Wenn Sie nur wollen, zu ersetzen einige der Zeichen, die Sie verwenden könnten:
InformationsquelleAutor der Antwort Christoph Roeder