为什么不点(。)匹配换行符(n)

正则表达式中的 .*基本上意味着“捕获所有内容直到输入结束”。

因此,对于像 hello world 这样的简单字符串,.*可以很好地工作。但是,如果你有一个字符串代表文件中的行,那么这些行将由行分隔符分隔,例如类 Unix 系统上的\n(换行符)和 Windows 上的\r\n(回车符和换行符)。

默认情况下,在大多数正则表达式引擎中,. 与换行符匹配,因此匹配在每个逻辑行的末尾停止。如果你想 . 匹配真正的一切,包括换行,你需要启用点百搭模式,你选择的正则表达式引擎(例如,添加 re.DOTALL 在 Python 标志,或 /s 在 PCRE。