字符串文字前面加“ r”是什么意思?

我第一次看到它用于跨多行构建正则表达式,作为 re.compile()的方法参数,所以我假设 r代表 RegEx。

例如:

regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)

那么 r在这种情况下意味着什么? 我们为什么需要它?

140065 次浏览

这意味着逃逸不会被翻译,例如:

r'\n'

是一个后面跟着字母 n的反斜杠的字符串。(如果没有 r,它将是一个换行符。)

b确实代表 byte-string,在 Python3中使用,其中字符串默认为 Unicode。在 Python 2.x 中,字符串默认是字节字符串,您可以使用 u来表示 Unicode。

r表示将字符串视为原始字符串,这意味着将忽略所有转义代码。

举个例子:

'\n'将被视为换行字符,而 r'\n'将被视为字符 \,然后是 n

当出现 'r''R'前缀时, 反斜杠后面的字符是 包含在字符串中, 所有的反斜杠都留在 例如,字符串 字面 r"\n"由两个 字符: 反斜杠和 字符串引号可以是 使用反斜杠转义,但是 反斜杠保留在字符串中; for 例如,r"\""是一个有效的字符串 由两个字符组成的文字: 反斜杠和双引号; r"\" 不是有效的字符串文字(甚至是 原始字符串不能以奇数结尾 )。具体来说,是一个原始的 字符串不能以单个 反斜杠(因为反斜杠 转义下面的引号字符)。 还要注意一个反斜杠 后跟换行符 作为这两个字符的一部分 字符串,而不是行的延续。

资料来源: Python 字符串文字