如何只读取包含特定数据的特定行

我试图在不使用外部库的情况下获取文件的最后修改时间

操作系统:Windows

代码:

local cache_out = io.popen("dir /T:W %CD%\\data\\actions\\scripts\\cache.lua", "r")
local cache_data = cache_out:read("*a")

它输出:

enter image description here

我的问题是:我如何从2021年6月29日开始读取以获取最后修改时间,在这种情况下是'04:45'?我知道可以使用string.findstring.gmatch来实现,但我不知道如何实现

点赞
用户11392703
用户11392703

Lua使用正则表达式和自己的类来匹配字符:

. -- 所有字符
%a -- 字母
%c -- 控制字符
%d -- 数字
%l -- 小写字母
%p -- 标点符号
%s -- 空格字符
%u -- 大写字母
%w -- 字母数字
%x -- 十六进制数字
%z -- 表示0的字符。

要获得除某一组外所有字符的类别,只需使用大写字母。例如,如果您想匹配除空格之外的任何字符(如制表符和空格),您可以使用%S

要匹配字符串的多个部分,可以在string.match() 中使用括号,如下所示:

local d, t, _ = string.match(cache_data, "(%d%d/%d%d/%d+)%s+(%d%d:%d%d)%s+([ap].m.)")

只需对数据进行除nil以外的任何验证即可。

对于更详细的信息,建议阅读此 https://www.lua.org/pil/20.2.html

2021-06-30 01:30:26