我已经阅读了很多问题来寻找答案,如果我错过了,抱歉。
假设我有一个仅包含换行符的文本。
text ='\n'
因为正则表达式使用反斜杠字符('\')来转义特殊含义的字符(例如 Python),所以我们将使用原始字符串表示法来匹配换行符,就像这样 answer建议。 (如有错误请指正)
所以我们会做 regex = re.compile(r'\n')
,正则表达式解析器可以读取反斜杠和字符“n”并将其解释为换行符。
My question is why does
regex = re.compile('\n')
also work too?
我尝试做regex.match(text)
结果是<_sre.SRE_Match object; span=(0, 1), match='\n'>
,与原始字符串表示法相同。
是不是因为here写的文档?其中说:
Most of the standard escapes supported by Python string literals are also accepted by the regular expression parser: \a \b \f \n \r \t \v \x \\
谁能详细解释一下吗?
最佳答案
r'\n'
抑制字符串文字的解释。这样,它包含两个字符 '\'
和 'n'
。这两个字符被正则表达式引擎解释为换行序列。在第二种情况下,'\n'
首先被转换为换行序列(即基于 Unix 的系统上的 LF,即一个字符;或者在 Windows 上转换为 CR LF,即两个字符) ,...)。正则表达式编译器将其视为显式给定的字符(没有反斜杠,没有特殊解释)。
关于python - 为什么正则表达式可以理解没有 r 前缀的\n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37900783/