【发布时间】:2015-05-27 14:24:00
【问题描述】:
我正在尝试阅读一个大约 10 GB 的巨大文本文件。 我想找到最后一次出现的字符串。
例如,下面是 5 行的示例,第 2 行和第 5 行是相同的字符串。
我想取最后一个,因为它是最新的,并使用 streamreader 将其输出到文本文件。
我最好使用 Regex 还是使用 lastindexof 来确定它是否是最后一个字符串?
我有很多这样的搜索要做,所以我会创建某种数组并让它自下而上搜索以提高性能。
有人能指出正确的方向吗?
GET/a/users/115656WindowsNT6.1;Trident
GET/a/users/126692MSIE7.0;WindowsNT6.1
GET/a/users/77562WindowsNT6.1;WOW64;Tr
GET/a/users/35650WindowsNT6.1;WOW64;Tr
GET/a/users/126692MSIE7.0;WindowsNT6.2
【问题讨论】:
-
你说你有 10 gigs 这些数据。我会使用基于 sqlite 的解决方案,将数据读入数据库,然后获得不同的值。我不会在这里使用任何正则表达式,除非您还想从这些字符串中获取特定的模式。由于这些行是相同的,因此仅获取最后一次出现(last = first)是没有意义的。
-
请参阅bytes.com/topic/net/answers/… 了解可能的解决方案。
-
实际上,您正在查看向后读取文件并在执行过程中检查行。倒着读还是很困难的。看到这个问题:stackoverflow.com/questions/452902/…
-
是的..您可以使用基于数据存储的解决方案..它会比使用正则表达式更快更高效..
-
尝试搜索“文件随机访问”。如果您的记录具有固定的记录长度,那么获取最后 N 条记录并将它们复制到字符串应该很容易。
标签: regex vb.net lastindexof