python - 为什么正则表达式可以理解没有 r 前缀的\n?

标签 python regex python-3.x string-literals rawstring

我已经阅读了很多问题来寻找答案,如果我错过了,抱歉。

假设我有一个仅包含换行符的文本。
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/

相关文章:

javascript - 如何将PAN的正则表达式变成渐进式正则表达式

python - 检查两个列表在 Python 中是否至少有 2 个共同项目的最快方法?

python - 我将如何标准化 csv 文件中的日期? Python

c# - 将通配符模式转换为正则表达式

python - 混淆转义单引号原始字符串文字中的单引号

python - 如何使用 for 循环遍历 pandas 数据框列以根据给定列表计算值

python - 在 Jupyter Notebook 上从 ThinkStats 运行练习时出错

Python二进制乘法算法?

python - 使用来自 Autoencoder 的权重在 tensorflow 中初始化神经网络

python - 通用编程 : Log FFT OR high-precision convolution (python)