Rückgabezeichenfolge mit allen nicht alphanumerischen Schrägstrichen; Dies ist nützlich, wenn Sie mit einer beliebigen Literalzeichenfolge übereinstimmen möchten, die möglicherweise Metazeichen mit regulären Ausdrücken enthält.
Ab Python 3.7 re.escape()wurde geändert, um nur Zeichen zu maskieren, die für Regex-Operationen von Bedeutung sind.
Im Suchmuster enthalten \sowie die Stelle (n) Sie suchen. Sie gehen zu verwenden \Ihre Charaktere zu entkommen, so dass Sie entkommen müssen
, dass auch.
Setzen Sie z. B. Klammern um das Suchmuster([\"]) , damit das Substitutionsmuster
das gefundene Zeichen verwenden kann, wenn es \davor hinzugefügt wird. (Das
\1bedeutet: Verwendet den Wert der ersten Gruppe in Klammern.)
Das rvor r'([\"])'bedeutet, dass es eine rohe Saite ist . Raw-Strings verwenden unterschiedliche Regeln, um Backslashes zu vermeiden. Um ([\"])als einfache Zeichenfolge zu schreiben , müssen Sie alle Backslashes verdoppeln und schreiben '([\\"])'. Rohe Zeichenfolgen sind freundlicher, wenn Sie reguläre Ausdrücke schreiben.
Im Substitutionsmuster, müssen Sie entkommen \es von einem umgekehrten Schrägstrich zu unterscheiden , die eine Substitutionsgruppe vorangeht, zum Beispiel \1, daher r'\\\1'. Um das als einfache Zeichenfolge zu schreiben
, müsste man '\\\\\\1'- und das will niemand.
Verwenden Sie repr () [1: -1]. In diesem Fall müssen die doppelten Anführungszeichen nicht maskiert werden. Das Slice [-1: 1] dient zum Entfernen des einfachen Anführungszeichens vom Anfang und vom Ende.
>>> x = raw_input()
I'm "stuck" :\
>>> print x
I'm "stuck":\
>>>print repr(x)[1:-1]
I\'m "stuck":\\
Oder möchten Sie einfach nur einer Phrase entkommen, um sie in Ihr Programm einzufügen? Wenn ja, machen Sie Folgendes:
Das funktioniert nicht, wenn der String Unicode ist, weil Sie u haben und laufen solltenrepr(x)[2:-1]
Antoine Pelisse
In Python3.4, wo alle Zeichenfolgen Unicode sind, scheint dies leider überhaupt nicht zu funktionieren. Stattdessen print(repr("I'm stuck")[1:-1])druckt I'm stuck.
Dantiston
3
Wie oben erwähnt, hängt die Antwort von Ihrem Fall ab. Wenn Sie eine Zeichenfolge für einen regulären Ausdruck maskieren möchten, sollten Sie re.escape () verwenden. Wenn Sie jedoch einem bestimmten Zeichensatz entkommen möchten, verwenden Sie diese Lambda-Funktion:
>>> escape =lambda s, escapechar, specialchars:"".join(escapechar + c if c in specialchars or c == escapechar else c for c in s)>>> s = raw_input()
I'm "stuck" :\
>>> print s
I'm "stuck":\
>>>print escape(s,"\\",['"'])
I'm \"stuck\" :\\
Antworten:
Verwenden
re.escape
Wiederholen Sie es hier:
Ab Python 3.7
re.escape()
wurde geändert, um nur Zeichen zu maskieren, die für Regex-Operationen von Bedeutung sind.quelle
regex.escape(pattern,string,special_only=True
Ich bin überrascht, dass niemand die Verwendung regulärer Ausdrücke über Folgendes erwähnt hat
re.sub()
:Wichtige Dinge zu beachten:
\
sowie die Stelle (n) Sie suchen. Sie gehen zu verwenden\
Ihre Charaktere zu entkommen, so dass Sie entkommen müssen , dass auch.([\"])
, damit das Substitutionsmuster das gefundene Zeichen verwenden kann, wenn es\
davor hinzugefügt wird. (Das\1
bedeutet: Verwendet den Wert der ersten Gruppe in Klammern.)r
vorr'([\"])'
bedeutet, dass es eine rohe Saite ist . Raw-Strings verwenden unterschiedliche Regeln, um Backslashes zu vermeiden. Um([\"])
als einfache Zeichenfolge zu schreiben , müssen Sie alle Backslashes verdoppeln und schreiben'([\\"])'
. Rohe Zeichenfolgen sind freundlicher, wenn Sie reguläre Ausdrücke schreiben.\
es von einem umgekehrten Schrägstrich zu unterscheiden , die eine Substitutionsgruppe vorangeht, zum Beispiel\1
, daherr'\\\1'
. Um das als einfache Zeichenfolge zu schreiben , müsste man'\\\\\\1'
- und das will niemand.quelle
Verwenden Sie repr () [1: -1]. In diesem Fall müssen die doppelten Anführungszeichen nicht maskiert werden. Das Slice [-1: 1] dient zum Entfernen des einfachen Anführungszeichens vom Anfang und vom Ende.
Oder möchten Sie einfach nur einer Phrase entkommen, um sie in Ihr Programm einzufügen? Wenn ja, machen Sie Folgendes:
quelle
repr(x)[2:-1]
print(repr("I'm stuck")[1:-1])
drucktI'm stuck
.Wie oben erwähnt, hängt die Antwort von Ihrem Fall ab. Wenn Sie eine Zeichenfolge für einen regulären Ausdruck maskieren möchten, sollten Sie re.escape () verwenden. Wenn Sie jedoch einem bestimmten Zeichensatz entkommen möchten, verwenden Sie diese Lambda-Funktion:
quelle
Es ist nicht so schwer:
quelle
characters
es besser der erste sein!Wenn Sie nur einige Zeichen ersetzen möchten, können Sie Folgendes verwenden:
quelle