《python核心编程》P181有这么一段程序:
>>> import re
>>> m = re.search('\\[rtfvn]', r'Hello World!\n')
>>> if m is not None: m.group()
...
>>> m = re.search(r'\\[rtfvn]', r'Hello World!\n')
>>> if m is not None: m.group()
...
'\\n'
没明白为什么绕了一大圈匹配'\n'
以下是我的实验:
>>> m = re.search('\[rtfvn]', 'Hello World!\n')
>>> print m
None
>>> m = re.search(r'\[rtfvn]',r'Hello World!\n')
>>> print m
None
>>> m = re.search('\\[rtfvn]', 'Hello World!\n')
>>> m
>>> print m
None
>>> m = re.search(r'\\[rtfvn]', r'Hello World!\n')
>>> print m
<_sre.SRE_Match object at 0x01EB1678>
综上,使用正则"\\n"匹配"\n"是不行的,只能用"\\\\n"匹配"\\n",即r"\\n"匹配r"\n"