1

我一直在阅读很多问题以找到答案,如果我错过了,我很抱歉。

假设我有一个只包含换行符的文本。
text ='\n'

因为正则表达式使用反斜杠字符 ('\') 来转义 Python 等特殊含义字符,所以我们将使用原始字符串表示法匹配换行符,就像这个答案所建议的那样。(如果我错了,请纠正我)

所以我们会这样做regex = re.compile(r'\n'),正则表达式解析器可以读取反斜杠和字符“n”并将其解释为换行符。

我的问题是为什么regex = re.compile('\n')也有效?

我尝试这样做regex.match(text),结果是<_sre.SRE_Match object; span=(0, 1), match='\n'>,这与原始字符串表示法相同。


是因为这里写的文件?其中说:

Python 字符串文字支持的大多数标准转义符也被正则表达式解析器接受: \a \b \f \n \r \t \v \x \\

有人可以详细解释一下吗?

4

1 回答 1

1

r'\n'抑制字符串文字的解释。这样,它包含两个字符'\''n'. 这两个字符被正则表达式引擎解释为换行序列。在第二种情况下,'\n'首先将其转换为换行符序列(即基于 Unix 的系统上的 LF,即一个字符;或 Windows 上的 CR LF,即两个字符,...)。正则表达式编译器将其视为明确给定的字符(没有反斜杠,没有特殊解释)。

于 2016-06-18T19:27:42.280 回答