Eclipse中的正则表达式字符串上的pep8警告

ala*_*rev 44 python eclipse string pep8 pydev

为什么pep8抱怨代码中的下一个字符串?

import re
re.compile("\d{3}")
Run Code Online (Sandbox Code Playgroud)

我收到的警告:

ID:W1401  Anomalous backslash in string: '\d'. String constant might be missing an r prefix.
Run Code Online (Sandbox Code Playgroud)

你能解释一下这个消息的含义吗?我需要在代码中更改什么才能传递警告W1401

代码通过测试并按预期运行.此外\d{3}是一个有效的正则表达式.

fal*_*tru 66

"\d""\\d"因为没有转义序列d.但是代码的读者并不清楚.

但是,考虑一下\t."\t"代表制表符,同时r"\t"代表文字\t字符.

所以当你的意思是文字时使用原始字符串,\并且d:

re.compile(r"\d{3}")
Run Code Online (Sandbox Code Playgroud)

或明确地转义反斜杠:

re.compile("\\d{3}")
Run Code Online (Sandbox Code Playgroud)

  • 来晚了,但是`\ d`与`\\ d`完全不同。前者匹配任何(Unicode)数字;后者与反斜杠匹配,后跟`d`。它们不相等。皮林特在这里似乎是错的。 (2认同)
  • @moodforaday,在python交互式shell中尝试''\ d'=='\\ d'`.还''\ t'=='\\ t'` (2认同)

use*_*789 5

Python 无法解析'\d'为转义序列,这就是它产生警告的原因。

之后它从字面上传递给正则表达式解析器,作为正则表达式的 ES 工作正常。