Encontrei um problema com o re
módulo em Python 3.6.5. Eu tenho este padrão em minha expressão regular:
'\\nRevision: (\d+)\\n'
Mas quando o executo, recebo um DeprecationWarning
.
Procurei o problema no SO e não encontrei a resposta, na verdade - o que devo usar no lugar \d+
? Apenas [0-9]+
ou talvez outra coisa?
python
regex
python-3.x
mchfrnc
fonte
fonte
\d
ou usor'\\nRevision: (\d+)\\n'
?Respostas:
Python 3 interpreta literais de string como strings Unicode e, portanto, seu
\d
é tratado como um caractere Unicode de escape.Declare seu padrão RegEx como uma string bruta em vez de prefixá-lo
r
, conforme abaixo:Isso também significa que você também pode descartar os escapes de
\n
, pois eles serão analisados como caracteres de nova linha porre
.fonte
\d
é tratado como uma sequência de escape não reconhecida e, como tal, não é alterado. Um aviso de depreciação é fornecido desde o Python 3.6. Em alguma versão futura do Python, será um SyntaxError. Detalhes de "2.4.1. Literais de string e bytes" no Docs.'\\d'
.