我第一次看到它用于跨多行构建正则表达式作为 的方法参数re.compile()
,所以我假设它r
代表 RegEx。
例如:
regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)
r
那么在这种情况下是什么意思呢?为什么我们需要它?
这r
意味着该字符串将被视为原始字符串,这意味着所有转义码都将被忽略。
例如:
'\n'
将被视为换行符,而r'\n'
将被视为.\
后面的字符n
。
当存在
'r'
or'R'
前缀时,反斜杠后面的字符将不加更改地包含在字符串中,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"
由两个字符组成:反斜杠和小写字母'n'
。字符串引号可以用反斜杠转义,但反斜杠保留在字符串中;例如,r"\""
是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"
不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。另请注意,后跟换行符的单个反斜杠被解释为这两个字符作为字符串的一部分,而不是作为续行符。
来源:Python 字符串文字
这意味着逃逸不会被翻译。例如:
r'\n'
是一个带有反斜杠后跟字母的字符串n
。(没有r
它将是一个换行符。)
b
确实代表字节字符串,并在 Python 3 中使用,其中字符串默认为 Unicode。在 Python 2.x 中,默认情况下字符串是字节字符串,您可以使用它u
来表示 Unicode。