我第一次看到它用于构建跨多行的正则表达式作为re.compile()
的方法参数,所以我假设r
代表RegEx。
例如:
regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)
那么r
在这种情况下意味着什么?我们为什么需要它?
答案 0 :(得分:136)
r
表示该字符串将被视为原始字符串,这意味着将忽略所有转义码。
举个例子:
'\n'
将被视为换行符,而r'\n'
将被视为字符\
,后跟n
。
如果存在
'r'
或'R'
前缀, 反斜杠后面的字符是 包含在字符串中没有变化, 并且所有反斜杠都留在了 串。例如,字符串 文字r"\n"
由两个组成 字符:反斜杠和 小写'n'
。字符串引号可以是 用反斜杠逃脱,但是 反斜杠保留在字符串中;对于 例如,r"\""
是一个有效的字符串 文字由两个字符组成: 反斜杠和双引号;r"\"
不是有效的字符串文字(甚至是 原始字符串不能以奇数结尾 反斜杠)。具体来说,是原始的 字符串不能以单个结尾 反斜杠(因为反斜杠会 逃避以下引用字符)。 还要注意单个反斜杠 然后解释换行符 作为这两个角色的一部分 字符串,而不是续行。
答案 1 :(得分:27)
这意味着转义不会被转换。例如:
r'\n'
是一个带反斜杠后跟字母n
的字符串。 (没有r
,它将是换行符。)
b
代表字节字符串,在Python 3中使用,其中字符串默认为Unicode。在Python 2.x中,默认情况下字符串是字节字符串,您可以使用u
来表示Unicode。