為什麼不點(。)匹配換行符(n)
正規表示式中的 .*
基本上意味著“捕獲所有內容直到輸入結束”。
因此,對於像 hello world
這樣的簡單字串,.*
可以很好地工作。但是,如果你有一個字串代表檔案中的行,那麼這些行將由行分隔符分隔,例如類 Unix 系統上的\n
(換行符)和 Windows 上的\r\n
(回車符和換行符)。
預設情況下,在大多數正規表示式引擎中,.
與換行符不匹配,因此匹配在每個邏輯行的末尾停止。如果你想 .
匹配真正的一切,包括換行,你需要啟用點百搭模式,你選擇的正規表示式引擎(例如,新增 re.DOTALL
在 Python 標誌,或 /s
在 PCRE。