为什么不点(。)匹配换行符(n)
正则表达式中的 .*
基本上意味着“捕获所有内容直到输入结束”。
因此,对于像 hello world
这样的简单字符串,.*
可以很好地工作。但是,如果你有一个字符串代表文件中的行,那么这些行将由行分隔符分隔,例如类 Unix 系统上的\n
(换行符)和 Windows 上的\r\n
(回车符和换行符)。
默认情况下,在大多数正则表达式引擎中,.
与换行符不匹配,因此匹配在每个逻辑行的末尾停止。如果你想 .
匹配真正的一切,包括换行,你需要启用点百搭模式,你选择的正则表达式引擎(例如,添加 re.DOTALL
在 Python 标志,或 /s
在 PCRE。