我有一個大的文本文件時工作,我通過使用行處理它行了... in語句:Python的腳本停止通過一個正則表達式
f = open(sys.argv[1])
for line in f:
而且我通過一些線正則表達式。但是,當正在通過正則表達式過去了這麼久行我的代碼將停止: 這是行:
Mar 25 09:42:22 2011 amavis[30883]: (30883-10) Passed CLEAN, [95.0.85.202] [95.0.85.202] <[email protected]> -> <[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<[email protected]>,<m...
這是正則表達式,並在代碼停止的地方:
pattern_clean = re.compile("(\S{3} \d{2} \d{2}\:\d{2}\:\d{2} \d{4}).*CLEAN, (LOCAL)?(\[[.\d]+\])?(\[[.\d]+\])?<(\S*@(\S*))?> -> (<\S*>,)* Message-ID: <(\S*)>, mail_id: (\S*), Hits: (\S*), queued_as: (\S*), (\S*)")
if pattern_clean.search(line) != None:
我有試試這個腳本在一個不同的文件上工作好吧。它也適用於這個文件,直到這一行出現。什麼可能導致這個問題?
您是否收到錯誤訊息?如果是這樣,它說什麼? – nmichaels 2011-03-25 14:48:24
是否有可能輸入是python的正則表達式庫的病態?我非常確定python使用backtacking正則表達式系統,所以它可能是你所提供的輸入將其投入到最壞情況的行爲中。該進程是否被鎖定?佔用大量的CPU? – Daenyth 2011-03-25 14:50:01
不,我沒有收到錯誤消息。它只是停在那裏,但不會退出腳本。 CPU使用率也保持在最大值。等級 – Alptugay 2011-03-25 14:51:53