6
我注意到Python的正則表達式庫中的一些奇怪的行爲,我不知道如果我做錯了什麼。Python正則表達式中的錯誤? (re.sub與re.MULTILINE)
如果我運行一個正則表達式使用re.sub()
,re.MULTILINE
。它似乎只能取代前幾次發生的事件。如果我關閉re.MULTILINE
,使用re.subn(..., count = 0, flags = re.MULTILINE)
或使用re.compile(..., re.MULTILINE)
編譯正則表達式,它將取代所有發生的事件。
我在Ubuntu 12.04上運行Python 2.7。
我已在隨機例如:
- Pastebin.com - 輸出從終端
- codepad - 腳本,確認行爲(除了re.subn(),它是不同上2.5)
有人可以確認/否認他們的機器上的這種行爲?
編輯:實現我應該繼續前進,並將其發佈在Python bug跟蹤器上。的
re.sub(pattern, replace, text, flags=re.MULTILINE)
代替
re.sub(pattern, replace, text, re.MULTILINE)
這相當於
re.sub(pattern, replace, text, count=re.MULTILINE)
這是在你的代碼中的錯誤http://bugs.python.org/msg168909
啊,好吧,這就解釋了哈哈。我已經解決了這個問題。謝謝! – eacousineau
我使用're.I'沒有'flags ='很長一段時間,並不知道這一點。 Docs不會警告您這種我認爲是嚴重錯誤的行爲。我什至不記得看到任何人明確使用'flags'和'count'。 – minerals
@礦物質:如果你點擊答案中的鏈接;你應該看到're.sub(pattern,repl,string,count = 0,flags = 0)'函數簽名,文檔解釋了'count'參數的含義。 – jfs