为什么正则表达式理解 \n 没有 r 前缀?
Why does regular expression understand \n without r prefix?
我已经阅读了很多问题来寻找答案,如果我错过了,抱歉。
假设我的文本只包含换行符。
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,即两个字符,。 ..).正则表达式编译器将其视为显式给定的字符(没有反斜杠,没有特殊解释)。
我已经阅读了很多问题来寻找答案,如果我错过了,抱歉。
假设我的文本只包含换行符。
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,即两个字符,。 ..).正则表达式编译器将其视为显式给定的字符(没有反斜杠,没有特殊解释)。