python中的regex语法,左引号前的r

fiz*_*x00 -1 python regex syntax

这是我正在编写的Python东西中的一行正则表达式:

m = re.match(r"{(.+)}", self.label)
Run Code Online (Sandbox Code Playgroud)

据我所知,它工作正常。

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

Cyp*_*ase 5

r之前的字符串字面告诉Python中没有做任何\的字符串逃脱。例如:

>>> print('a\nb')
a
b
>>> print(r'a\nb')
a\nb
>>> 
Run Code Online (Sandbox Code Playgroud)

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