我不確定這是不是你的問題。
正則表達式匹配與否。表達式將匹配可變數量的輸入。所以不能直接確定。
但是,如果您認爲存在重疊的可能性,則可以使用智能緩衝方案來實現相同的目的。
有很多方法可以做到這一點。
一種方法是通過斷言來匹配所有不匹配的東西,直到獲得匹配的開始 (但不是您尋求的完全匹配)。 這些你簡單地扔掉你的緩衝區並清除。當你找到一個匹配時,清除它之前的數據和數據的緩衝區。
示例:/(<function.*?>)|([^<]*)/
您從緩衝區丟棄/清除的部分位於組2捕獲緩衝區中。
另一種方法是,如果你匹配有限長度的字符串,如果你不匹配緩衝區中的任何東西,你可以安全地扔掉所有從緩衝區開始到緩衝區結束減去長度您正在搜索的有限字符串。
示例:您的緩衝區大小爲64k。您正在搜索一個長度爲10的字符串。它在緩衝區中找不到。您可以安全地清除(64k - 10)個字節,保留最後10個字節。然後將(64k-10)個字節附加到緩衝區的末尾。當然,您只需要一個10字節的緩衝區,不斷刪除/添加1個字符,但更大的緩衝區更有效,您可以使用閾值重新加載更多數據。
如果您可以創建容易合同/擴展的緩衝區,則可以使用更多緩衝選項。
來源
2011-01-21 19:49:15
sln