Ich habe ein Problem mit dem re
Modul in Python 3.6.5 festgestellt. Ich habe dieses Muster in meinem regulären Ausdruck:
'\\nRevision: (\d+)\\n'
Aber wenn ich es laufen lasse, bekomme ich eine DeprecationWarning
.
Ich habe auf SO nach dem Problem gesucht und die Antwort eigentlich nicht gefunden - was soll ich stattdessen verwenden \d+
? Nur [0-9]+
oder vielleicht noch etwas?
python
regex
python-3.x
mchfrnc
quelle
quelle
\d
oder Verwendungr'\\nRevision: (\d+)\\n'
?Antworten:
Python 3 interpretiert Zeichenfolgenliterale als Unicode-Zeichenfolgen. Daher wird Ihre Zeichenfolge als maskiertes
\d
Unicode-Zeichen behandelt.Deklarieren Sie Ihr RegEx-Muster stattdessen als Rohzeichenfolge
r
, indem Sie wie folgt voranstellen :Dies bedeutet auch, dass Sie die
\n
Escapezeichen ebenfalls löschen können, da diese nur als Zeilenumbruchzeichen von analysiert werdenre
.quelle
\d
es als nicht erkannte Escape-Sequenz behandelt und bleibt als solche unverändert. Eine DeprecationWarning wird seit Python 3.6 angegeben. In einigen zukünftigen Versionen von Python wird es ein SyntaxError sein. Details aus "2.4.1. String- und Byte-Literale" in den Dokumenten.'\\d'
.