为啥在 Python 的正则表达式中使用 'r'? [复制]

Posted

技术标签:

【中文标题】为啥在 Python 的正则表达式中使用 \'r\'? [复制]【英文标题】:Why is 'r' used in regular expression in Python? [duplicate]为什么在 Python 的正则表达式中使用 'r'? [复制] 【发布时间】:2012-10-25 23:53:15 【问题描述】:

可能重复:What exactly do “u” and “r”string flags in Python, and what are raw string litterals?

p = re.compile(r'(\b\w+)\s+\1')

p.search('Paris in the the spring').group()

第一行r是什么意思?

【问题讨论】:

【参考方案1】:

r 指定 Python 中的原始字符串,其规则与标准字符串不同,例如您不必转义反斜杠和其他特殊字符。

【讨论】:

当使用 r 为什么 \w 仍然被视为转义序列而不是文字。 据我所知,在文档中它没有说明 \w 被视为转义序列。事实上,它不是一个转义序列。 \w 没有任何意义。 docs.python.org/2/reference/… 你可以查看这个链接docs.python.org/2/howto/regex.html这里提到了\w 是的,r"\w" 将匹配任何字母数字字符。使用 r 可以输入 r"\w" 而不是 "//w"。 r 允许您在字符串中包含 Python 转义序列,而无需转义 \。我觉得我对你不太清楚。 谢谢阿琼。现在我理解得更好了。【参考方案2】:

来自re documentation:

解决方案是对正则表达式模式使用 Python 的原始字符串表示法;在以 'r' 为前缀的字符串文字中,不会以任何特殊方式处理反斜杠。所以 r"\n" 是一个包含 '\' 和 'n' 的两个字符的字符串,而 "\n" 是一个包含换行符的一个字符的字符串。通常模式将使用这种原始字符串表示法在 Python 代码中表示。

【讨论】:

当使用 r 为什么 \w 仍然被视为转义序列而不是文字? \w 不是转义序列,它是一个特殊序列(在re 文档的syntax section 底部)。

以上是关于为啥在 Python 的正则表达式中使用 'r'? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥编译的 python 正则表达式比较慢?

为啥在 Python 3 中未编译的、重复使用的正则表达式要慢得多?

为啥这个正则表达式不起作用:r'.*logo.*' [重复]

为啥在 PEP 0263 正则表达式中使用 `.`?

在python中使用正则表达式需要注意的

在python中使用正则表达式