Python 的re.sub 和re.MULTILINE 標誌無法替換所有出現
Python 文件表明re.MULTILINE 文件表明,當指定,允許標誌“^”模式在字串的開頭和每行的開頭匹配。然而,當將此標誌與 re.sub 一起使用時,會出現令人困惑的行為。
考慮以下程式碼:
<code class="python">import re s = """// The quick brown fox. ... // Jumped over the lazy dog.""" print(re.sub('^//', '', s, re.MULTILINE))</code>
此程式碼旨在刪除所有出現的「//」註解每行的開頭。然而,輸出意外地留下了一個未發生的事件:
The quick brown fox. // Jumped over the lazy dog.
理解問題
此行為的原因在於錯誤使用了第四個參數重新子功能。此參數旨在指定要替換的匹配項計數,而不是作為標誌。在給定的程式碼中,re.MULTILINE(值為 8)被用作計數,而不是標誌。
修正程式碼
至解這個問題,有兩種可能的方法:
<code class="python">print(re.sub('^//', '', s, flags=re.MULTILINE))</code>
<code class="python">print(re.sub(re.compile('^//', re.MULTILINE), '', s))</code>這兩種方法都正確使用.MULTILINEre.MULTILINE作為標誌,從而產生所需的行為:
以上是為什麼 `re.sub` 和 `re.MULTILINE` 不取代所有出現的情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!