1
A
回答
3
这很简单。您可以计算您要查找的最长模式,然后按照该数量回溯文件指针,或者滚动文件,只读取增量。
想象一下最长的模式是26个字节。
- 阅读1k。
- 检查所有模式 - >无。
- 从缓冲区中删除1k - 26个字节。
- 阅读1000 - 从物流26个字节,并添加到您的缓冲区
- 转到2.
编辑:让我澄清一下:有两种方法可以做到这一点,两者各有优劣。我上面记录的一个最适合用于从流中读取数据,这意味着不支持查找的数据源。但是,如果您的数据源确实支持寻找(如文件系统文件),那么您可以轻松地使用搜索。检查图案,如果找不到,请回溯最长图案的尺寸,然后从那里开始。
但是,如果您希望支持搜索长度超过缓冲区大小的模式,则可能需要更聪明的算法。您需要一个包含当前“打开”的所有模式的查阅表,以便读取更多数据,这反过来会花费更多的内存 - 您会遇到问题。
1
你可以看看CharBuffer
,这只是这个目的
2
这就是Scanner类是什么实现CharSequence
。
0
为什么不使用SAX parser。它是建立处理大型文件的标记。如果您尝试在同一级别的不同元素上进行匹配,您会遇到问题。然而,这不是不可能处理
相关问题
- 1. Python在字符串中查找模式
- 2. 在字符串中查找模式PHP
- 3. jQuery查找字符串中的模式
- 4. 查找字符串中的模式linux
- 5. 在字符串C#查找模式
- 6. 查找最长字符串的长度
- 7. 如何在字符串表达式中查找字符串模式Java?
- 8. 查找NSArray中的最长字符串
- 9. 在Java中查找特定长度/格式的子字符串
- 10. 查找字符串的模式
- 11. 使用grep查找字符串模式
- 12. 如何从长字符串中查找子字符串(0,91)?
- 13. 查找字符串中所有子字符串的长度
- 14. 查找字符串中最长的重复子字符串?
- 15. 查找字符串数组中最长的字符串
- 16. 在字符串中查找字符串
- 17. 在字符串中查找字符串
- 18. 如何在一组文件中查找字符串和字符串模式?
- 19. 在C#中查找字符串中的所有模式索引#
- 20. 在Lua中查找指定字符串中的模式
- 21. 在Python中查找字符串中的模式
- 22. 在Python中查找字符串中的模式
- 23. 如何在Python中查找字符串中的模式/组合?
- 24. C - 在格式化字符串中查找子字符串
- 25. 正则表达式在字符串中查找字符串
- 26. 在Python中以字符串的数字顺序查找最长的字符串
- 27. 查找multiplicy长度的字符串
- 28. 查找字符串的长度
- 29. 在文本中查找字符串的特定模式
- 30. 在数组中查找特定的字符串模式jquery
让我们只希望他的长度最长的字符串不是1k-1 :) – 2011-01-19 15:14:20
好主意,但它只适用于,如果他搜索确切的字符。如果模式 - 一些html标签之间的所有内容。它的长度是不可预测的。 – 2011-01-19 15:14:46