J'ai rencontré un problème avec le re
module dans Python 3.6.5. J'ai ce modèle dans mon expression régulière:
'\\nRevision: (\d+)\\n'
Mais quand je le lance, j'obtiens un DeprecationWarning
.
J'ai recherché le problème sur SO , et je n'ai pas trouvé la réponse, en fait, que dois-je utiliser à la place \d+
? Juste [0-9]+
ou peut-être autre chose?
python
regex
python-3.x
mchfrnc
la source
la source
\d
ou utilisationr'\\nRevision: (\d+)\\n'
?Réponses:
Python 3 interprète les littéraux de chaîne comme des chaînes Unicode, et donc votre
\d
est traité comme un caractère Unicode échappé.Déclarez votre modèle RegEx en tant que chaîne brute à la place en le préfixant
r
, comme ci-dessous:Cela signifie également que vous pouvez également supprimer les échappements,
\n
car ceux-ci seront simplement analysés en tant que caractères de nouvelle ligne parre
.la source
\d
est traitée comme une séquence d'échappement non reconnue et, en tant que telle, reste inchangée. Un DeprecationWarning est donné depuis Python 3.6. Dans certaines versions futures de Python, ce sera une SyntaxError. Détails de "2.4.1. Littéraux de chaîne et d'octets" dans la documentation.'\\d'
.