Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何在Lua中从文件末尾查找单词_File_Lua - Fatal编程技术网

File 如何在Lua中从文件末尾查找单词

File 如何在Lua中从文件末尾查找单词,file,lua,File,Lua,好的,我使用这里的方法: 问题是,有时线路可能更大 问题是我如何从文件末尾找到第一个单词“foo”,然后使用它后面的所有内容?如果文件不是太大,并且您已经准备好采取简单的方法,这可能会有所帮助: fh=io.open('myfile.txt','rb') str=fh:read'*a' pat='foo' afterFoo=str:match('.*'..pat..'(.*)$') fh:close() 如果您需要一个更复杂但更快(在大文件的运行时)的解决方案,我的猜测是您将以块的形式读入文件

好的,我使用这里的方法:

问题是,有时线路可能更大


问题是我如何从文件末尾找到第一个单词“foo”,然后使用它后面的所有内容?

如果文件不是太大,并且您已经准备好采取简单的方法,这可能会有所帮助:

fh=io.open('myfile.txt','rb')
str=fh:read'*a'
pat='foo'
afterFoo=str:match('.*'..pat..'(.*)$')
fh:close()
如果您需要一个更复杂但更快(在大文件的运行时)的解决方案,我的猜测是您将以块的形式读入文件,反转每个块,并反向查找您的模式。别忘了跨边界查找模式(在一般情况下,块必须至少与正在查找的模式长度重叠)

有关区块阅读的更多解释,请参阅我的帖子

问题是,有时线路可能更大

然后,你只需要从末端再往回寻找

问题是我如何从文件末尾找到第一个单词“foo”,然后使用它后面的所有内容

抓取一个足够大的文件块,确保您已经得到了最后一个foo,使用
*foo
跳过所有内容,包括最后一个“foo”(*是贪婪的)


非常感谢,这帮了大忙。也谢谢你,我的文件可能很大(我正在解析一个日志)。既然你已经在使用正则表达式,就不需要反转任何东西了。只需使用
*PATTERN
跳过所有内容,包括上次出现的
PATTERN
local f = io.open('filename', 'r')
f:seek('end', -1024)
local text = f:read('*a')
local after = string.match(text, ".*foo(.*)")
f:close()