使用re.sub 和Flag 進行意外替換
Python 文件指出re.MULTILINE 標誌允許插入符(^)匹配在每行符的開頭。但是,當將此標誌與 re.sub 一起使用時,可能會發生意外行為。
考慮以下範例:
預期結果是所有以「//」開頭的行替換為空字串,只剩下:
但是,實際結果是:
問題原因
出現此問題的原因是re.sub 函數接受第四個參數來表示要進行的最大替換數。在範例中,re.MULTILINE 被錯誤地用作計數而不是標誌。
解決方案
要修正此行為,請使用命名參數來指定flag:
或者,您可以使用所需的標誌編譯正規表示式,然後再將其與re.sub:
透過正確指定re.MULTILINE 標誌,您可以確保所有出現的模式^// 都被替換,無論它們在字串中的位置如何。
以上是為什麼 re.sub 在使用 re.MULTILINE 標誌時會表現異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!