无法搜索' \\ n'在python3中使用正则表达式

时间:2017-07-09 11:13:59

标签: python regex python-3.x

>>> import re
>>> a='''\\n5
... 8'''
>>> b=re.findall('\\n[0-9]',a)
>>> print(b)
['\n8']

为什么会显示\n8而不显示\n5? 我第一次在\前面使用\n。 我发现python中的正则表达式中使用原始string有点令人困惑。对我来说,它似乎没有对结果进行任何更改

3 个答案:

答案 0 :(得分:2)

\\n不是换行符,它是带有n的转义反斜杠。

>>> import re
>>> a = '''\n5
... 8'''
>>> a=re.findall('\\n[0-9]',a)
>>> print(a)
['\n5', '\n8']

答案 1 :(得分:2)

这是因为在字符串中,换行符被认为是单个字符。

当您执行node_modules时,您正在逃避\\n5,因此字面上打印\,而不是Python标准的换行符。

当您搜索\n5这样的正则表达式时,在第一个\\n[0-9]中您正在转义\ 正则表达式表达式,所以最后你正在寻找Python的换行符\n。这符合字符串中的实际换行符,但不是\n,这是两个单独的字符,转义为\\n\

答案 2 :(得分:1)

因为\\n5不是新行,它会打印\n5