1
A
回答
3
這很簡單。您可以計算您要查找的最長模式,然後按照該數量回溯文件指針,或者滾動文件,只讀取增量。
想象一下最長的模式是26個字節。
- 閱讀1k。
- 檢查所有模式 - >無。
- 從緩衝區中刪除1k - 26個字節。
- 閱讀1000 - 從物流26個字節,並添加到您的緩衝區
- 轉到2.
編輯:讓我澄清一下:有兩種方法可以做到這一點,兩者各有優劣。我上面記錄的一個最適合用於從流中讀取數據,這意味着不支持查找的數據源。但是,如果您的數據源確實支持尋找(如文件系統文件),那麼您可以輕鬆地使用搜索。檢查圖案,如果找不到,請回溯最長圖案的尺寸,然後從那裏開始。
但是,如果您希望支持搜索長度超過緩衝區大小的模式,則可能需要更聰明的算法。您需要一個包含當前「打開」的所有模式的查閱表,以便讀取更多數據,這反過來會花費更多的內存 - 您會遇到問題。
1
你可以看看CharBuffer
,這只是這個目的
2
這就是Scanner類是什麼實現CharSequence
。
0
爲什麼不使用SAX parser。它是建立處理大型文件的標記。如果您嘗試在同一級別的不同元素上進行匹配,您會遇到問題。然而,這不是不可能處理
相關問題
- 1. 在字符串中查找模式PHP
- 2. 查找字符串中的模式linux
- 3. 如何在字符串表達式中查找字符串模式Java?
- 4. 使用grep查找字符串模式
- 5. 查找字符串數組中最長的字符串
- 6. 在字符串中查找字符串
- 7. 如何在一組文件中查找字符串和字符串模式?
- 8. 正則表達式在字符串中查找字符串
- 9. 在Python中查找字符串中的模式
- 10. 在Python中以字符串的數字順序查找最長的字符串
- 11. 查找字符串的長度
- 12. 批處理腳本:在字符串中查找模式
- 13. 使用re在字符串中查找模式'ds ***'
- 14. Typescript字符串|字符串[]查找數組長度
- 15. SQL:查找數據字符串中的動態長度字符
- 16. 查找重複字符的最長的子字符串中的
- 17. 在字符串python中查找最長的唯一子字符串
- 18. 查找字符串中的字符串
- 19. 一個給定的字符串中查找字符串模式的重複
- 20. 正則表達式查找字符串中的字符串中的字符串
- 21. 試圖在Ruby中查找數組中最長的字符串
- 22. 內找到長字符串
- 23. VBA在基於字符格式的字符串中查找字符串
- 24. 在PHP中檢查字符串長度
- 25. 如何查找長串文本中的字符串?
- 26. 如何在使用strlen()的out中查找字符串長度?
- 27. 在bash中查找可變長度的子字符串
- 28. 函數在cpp中查找2d字符串數組的長度?
- 29. 如何在Perl中查找Unicode字符串的長度?
- 30. 如何在Rails中查找字符串長度?
讓我們只希望他的長度最長的字符串不是1k-1 :) – 2011-01-19 15:14:20
好主意,但它只適用於,如果他搜索確切的字符。如果模式 - 一些html標籤之間的所有內容。它的長度是不可預測的。 – 2011-01-19 15:14:46