LUA在表中选择特定的字符串

时间:2018-06-26 12:09:56

标签: string select lua lua-table

我在从LUA表中恢复值时遇到问题。

表(字符串):

table = {
key = "/get value0\n/get [opt1][opt2] value1\n/get [opt1][opt2][opt3][opt4] value2\n/get value3\n/get [opt1] value4",
},

是否可以为第一行选择“ / get”和“ value0”。 以及其他所有行上的“ / get”和“ value1或2/3/4”?

我想我有一个可行的想法,但是说起来容易做起来

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

结果:

/get value0 
/get value1 
/get value2 
/get value3 
/get value4

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

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