python 中的正则表达式语法,左引号前的 r

regex syntax in python, the r before the opening quote

这是我正在写的 Python 内容中的一行正则表达式:

m = re.match(r"{(.+)}", self.label)

据我所知,它工作正常。

无论如何,我的问题是关于第一个双引号之前的 r 字符。我从来没有真正质疑过它。但它为什么在那里?它的目的是什么?

"String literals may optionally be prefixed with a letter 'r' or 'R'; such strings are called raw strings and use different rules for interpreting backslash escape sequences."

https://docs.python.org/2/reference/lexical_analysis.html#string-literals

字符串文字前的 r 告诉 Python 不要对字符串进行任何 \ 转义。例如:

>>> print('a\nb')
a
b
>>> print(r'a\nb')
a\nb
>>> 

r 前缀字符串经常与正则表达式一起使用的原因是因为正则表达式经常使用很多 \。例如,使用一个简单的例子,比较正则表达式 '\d+'r'\d+'。它们实际上是相同的字符串,只是以不同的方式表示。使用 r 语法,您不必转义正则表达式语法中使用的 \。现在想象一下在你的正则表达式中有很多 \;使用 r 语法更简洁。