我一直在阅读很多问题以找到答案,对不起,如果我错过了。
假设我的文字只包含一个换行符
text ='\n'
因为正则表达式使用反斜杠字符('\')来转义像Python这样的特殊含义字符,所以我们将使用原始字符串表示法匹配新行字符,就像建议的answer一样。 (如果我错了,请纠正我)
所以我们会做regex = re.compile(r'\n')
,正则表达式解析器可以读取反斜杠和字符'n'并将其解释为换行符。
我的问题是为什么
regex = re.compile('\n')
也有效?
我尝试regex.match(text)
,结果为<_sre.SRE_Match object; span=(0, 1), match='\n'>
,与原始字符串表示法相同。
是否因为here中写的文件?其中说:
正则表达式解析器也接受Python字符串文字支持的大多数标准转义: \ a \ b \ f \ n \ r \ t \ v \ x \\
有人可以详细解释一下吗?
答案 0 :(得分:1)
r'\n'
会抑制字符串文字的解释。这样,它包含两个字符'\'
和'n'
。正则表达式引擎将这两个字符解释为换行符序列。在第二种情况下,'\n'
首先转换为换行序列(在基于Unix的系统上为LF,即一个字符;或在Windows上为CR LF,即两个字符,......)。正则表达式编译器将其作为显式给定的字符(没有反斜杠,没有特殊解释)。