lua sting.match 只需要第一个检测

我正在使用 io.open 检测 BDMV 文件夹的蓝光文件夹

当在 NAS 位置使用 for 循环查找文件夹时,我使用 string.find 获取文件夹列表中的“BDMV”。将此值存储在表中。

问题是,当我运行代码时,它将列出所有子目录并将其添加到表中。

我只想要文件夹的第一个实例,如

1=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV

我得到的是

所有子文件夹和文件的列表

1=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV
2=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/AUXDATA
3=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/AUXDATA/sound.bdmv
4=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/BACKUP
5=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/BACKUP/BDJO
6=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/BACKUP/BDJO/00000.bdjo
7=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/BACKUP/BDJO/00001.bdjo
8=Minions.2015.1080p.BluRay.AVC.TrueHD.7.1.Atmos-RARBG/BDMV/BACKUP/BDJO/00002.bdjo

等等..............

这大约有1000多个文件条目我不想要。

我尝试使用 sting.match 来匹配模式并仅检测第一个实例并忽略其余的。到目前为止没有运气。

if string.find(t,"BDMV") then
    if string.match(t,"(.+/BDMV)") then

    Movies[#Movies+1] = t
else
   print("ignor")
end

请告诉我是否需要更多细节。谢谢。

点赞
用户1847592
用户1847592

local already_have = {} local Movies = {}

-- 开始循环 -- local t = ... local name = string.match(t, "^.+/BDMV%f[%W]") -- 感谢 Paul 提供的建议 if name and not already_have[name] then already_have[name] = true Movies[#Movies+1] = t end -- 循环结束


2016-06-20 15:56:16