Me encontré con un problema con el re
módulo en Python 3.6.5. Tengo este patrón en mi expresión regular:
'\\nRevision: (\d+)\\n'
Pero cuando lo ejecuto, obtengo un DeprecationWarning
.
Busqué el problema en SO y no he encontrado la respuesta, en realidad, ¿qué debo usar en lugar de \d+
? ¿Solo [0-9]+
o quizás algo más?
python
regex
python-3.x
mchfrnc
fuente
fuente
\d
o usor'\\nRevision: (\d+)\\n'
?Respuestas:
Python 3 interpreta los literales de cadena como cadenas Unicode y, por lo tanto,
\d
se trata como un carácter Unicode de escape.Declare su patrón de expresión regular como una cadena sin procesar en lugar de anteponer
r
, como se muestra a continuación:Esto también significa que también puede descartar los escapes
\n
, ya que estos solo serán analizados como caracteres de nueva línea porre
.fuente
\d
se trata como una secuencia de escape no reconocida y, como tal, no se modifica. Se da una DeprecationWarning desde Python 3.6. En alguna versión futura de Python será un SyntaxError. Detalles de "2.4.1. Literales de cadena y bytes" en Docs.'\\d'
.