仅当包含特定数据时如何读取特定行

How to read a specific line only if contains a specific data

基本上我试图在没有外部库的情况下获取文件的最后修改时间戳

OS: Windows

代码:

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

它打印:

我的问题是:如何从 29/06/2021 开始读取以获得修改时间,在本例中为“04:45”?我知道可以使用 string.findstring.gmatch 来完成,但我不知道如何

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

.  -- all characters
%a -- letters
%c -- control characters
%d -- digits
%l -- lower case letters
%p -- punctuation characters
%s -- space characters
%u -- upper case letters
%w -- alphanumeric characters
%x -- hexadecimal digits
%z -- the character with representation 0.

要获取除组之外的所有字符的 class,只需使用大写字母即可。例如,如果您想匹配 space 以外的任何字符(如制表符和 space),您可以使用 %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