LUA 选择表中特定的字符串

我有一个从LUA表中恢复值的问题。

表的字符串格式如下:

table = {
key = "/获取值0\n/ [opt1] [opt2] 值1\n/ [opt1] [opt2] [opt3] [opt4] 值2\n/获取值3\n/ [opt1] 值4",
},

有可能选择第一行的“/获取”和“值0”。并且在其他行上选择“/获取”和“值1、2、3或4”。

我想我有一个实现的想法,但说起来比做起来容易

  • 1)计算总共的“\ n”并加上一。
  • 2)选择第一个“/”和第一个空格。
  • 3)选择最后一个“]”(如果存在)或值前面的最后一个空格。
  • 4)对每行重复此操作。

结果:

/ 获取值0
/获取值1
/获取值2
/获取值3
/获取值4
点赞
用户107090
用户107090

尝试使用此代码:

s=[[
/get value0
/get [opt1][opt2] value1
/get [opt1][opt2][opt3][opt4] value2
/get value3
/get [opt1] value4
]]

for l in s:gmatch("(/.-)\n") do
    print((l:gsub("%b[]%s*","")))
end

它首先将字符串分成行,然后删除括号内的所有字符串,可选择跟随空格。

简单的匹配是 l:gsub(" .* "," "),它会删除第一个空格到最后一个空格之间的所有内容。

如果您想要分割结果字符串,请使用以下代码:

for l in s:gmatch("(/.-)\n") do
    local var1, var2 = l:gsub(" .* "," "):match("(.*) (.*)$")
    print(var1, var2 )
end
2018-06-26 12:51:39