无法搜索'\\n';在python3中使用正则表达式
为什么它显示无法搜索'\\n';在python3中使用正则表达式,python,regex,python-3.x,Python,Regex,Python 3.x,为什么它显示\n8而不显示\n5? 我第一次在\n前面用了一个\。 我发现在python的正则表达式中使用原始字符串有点令人困惑。在我看来,它似乎没有对结果进行任何更改,因为\\n5不是有效的新行,它将打印\n5 \\n不是换行符,它是带n的转义反斜杠 >>> import re >>> a='''\\n5 ... 8''' >>> b=re.findall('\\n[0-9]',a) >>> print(b) ['\n8'
\n8
而不显示\n5
?
我第一次在\n
前面用了一个\
。
我发现在python的正则表达式中使用原始
字符串有点令人困惑。在我看来,它似乎没有对结果进行任何更改,因为\\n5
不是有效的新行,它将打印\n5
\\n
不是换行符,它是带n的转义反斜杠
>>> import re
>>> a='''\\n5
... 8'''
>>> b=re.findall('\\n[0-9]',a)
>>> print(b)
['\n8']
这是因为在字符串中,换行符被认为是单个字符
当您执行\\n5
时,您正在转义\
,因此这实际上是在打印\n5
,而不是Python标准的换行符
当你搜索一个正则表达式,比如\\n[0-9]
时,在第一个\
中,你要转义\n
正则表达式,所以最后你要寻找的是\n
,这是Python的新行。它与字符串中的实际换行符匹配,但不匹配\\n
,后者是两个独立的字符,一个转义的\
和一个n
如何在结果中获取\\n5?@VaibhavPandey如果您想同时获取\\n5
和\n8
,可以使用非捕获组来检查这两个字符中的一个:'(?:\\n |\\\\n)[0-9]'
。如果您只需要\\n5
,请包括双转义斜杠:“\\\\n[0-9]'
。
>>> import re
>>> a = '''\n5
... 8'''
>>> a=re.findall('\\n[0-9]',a)
>>> print(a)
['\n5', '\n8']