正则表达式中的原始字符串表示法

时间:2013-10-05 21:04:27

标签: python regex

Python有这种指定正则表达式模式的方式,其中不应将所有特殊字符视为特殊字符。来自文档:

  

所以r“\ n”是包含'\'和'n'的双字符字符串,而“\ n”是包含换行符的单字符字符串。

为什么这会起作用?

import re
print re.split(r"\n", "1\n2\n3")

第一个参数应为“\”和“n”,第二个参数应包含两个换行符。但它打印出来:

['1', '2', '3']

1 个答案:

答案 0 :(得分:2)

第一个包含反斜杠和n,但在正则表达式语言中,反斜杠和n表示换行符(就像在Python字符串语法中一样)。也就是说,字符串r"\n"不包含实际换行符,但它包含一些告诉正则表达式引擎查找实际换行符的内容。

如果要搜索后跟n的反斜杠,则需要使用r"\\n"

原始字符串的要点是它们阻止Python对字符串转义的基本解释,允许您使用反斜杠来表示其正则表达式含义。如果你不想要正则表达式的含义,你仍然必须使用两个反斜杠,如上面的例子所示。但是如果没有原始字符串,情况会更糟:如果你想在没有原始字符串的情况下搜索文字反斜杠-n,你必须使用"\\\\n"。如果原始字符串阻止了对正则表达式特殊字符的解释(因此普通"\n"实际上意味着反斜杠-n),那么你根本就没有任何方法可以使用正则表达式语法。