有沒有辦法將re.findall
或更好的re.finditer
功能應用到流(即文件句柄是否可以打開)?findall/finditer在流中?
請注意,假設要匹配的模式完全包含在一行輸入內(即允許多行模式),我是而不是。我也不是假設最大匹配長度。
確實,在這個普遍性水平上,可以指定一個正則表達式,它要求正則表達式引擎可以訪問整個字符串(例如r'(?sm).*'
),當然這意味着必須閱讀整個文件存入內存,但我現在不關心這種最糟糕的情況。畢竟,完全有可能編寫多行匹配的正則表達式,其將而不是要求將整個文件讀入內存。
是否有可能通過編譯的正則表達式訪問底層自動機(或內部使用的任何內部函數),爲其提供一串字符?
謝謝!
編輯:添加關於多行模式和匹配長度的說明,以迴應蒂姆Pietzcker和rplnt的答案。
感謝您的編輯 - 我已經更新了我的答案。 – 2012-03-20 08:48:48