LUA select table 中的特定字符串
LUA select specific string in table
我无法从 LUA table.
恢复值
Table(字符串):
table = {
key = "/get value0\n/get [opt1][opt2] value1\n/get [opt1][opt2][opt3][opt4] value2\n/get value3\n/get [opt1] value4",
},
第一行是否可以select“/get”和"value0"。
以及所有其他行的“/get”和"value1 or 2 / 3 / 4" ?
我想我有一个可行的想法,但说起来容易做起来难
- 1) 统计"\n"的总数并加一。
- 2) Select 第一个“/”和第一个 space。
- 3) Select 最后一个“]”(如果存在)或最后一个 space 在值之前。
- 4) 对每一行重复操作。
结果:
/get value0
/get value1
/get value2
/get value3
/get value4
试试这个代码:
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
它首先将字符串吐出成行,然后删除括号中的所有字符串,可选地后跟 spaces。
一个更简单的匹配是 l:gsub(" .* "," ")
,它将删除从第一个 space 到最后一个的所有内容。
如果要拆分结果字符串,请使用此代码:
for l in s:gmatch("(/.-)\n") do
local var1, var2 = l:gsub(" .* "," "):match("(.*) (.*)$")
print(var1, var2 )
end
我无法从 LUA table.
恢复值Table(字符串):
table = {
key = "/get value0\n/get [opt1][opt2] value1\n/get [opt1][opt2][opt3][opt4] value2\n/get value3\n/get [opt1] value4",
},
第一行是否可以select“/get”和"value0"。 以及所有其他行的“/get”和"value1 or 2 / 3 / 4" ?
我想我有一个可行的想法,但说起来容易做起来难
- 1) 统计"\n"的总数并加一。
- 2) Select 第一个“/”和第一个 space。
- 3) Select 最后一个“]”(如果存在)或最后一个 space 在值之前。
- 4) 对每一行重复操作。
结果:
/get value0
/get value1
/get value2
/get value3
/get value4
试试这个代码:
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
它首先将字符串吐出成行,然后删除括号中的所有字符串,可选地后跟 spaces。
一个更简单的匹配是 l:gsub(" .* "," ")
,它将删除从第一个 space 到最后一个的所有内容。
如果要拆分结果字符串,请使用此代码:
for l in s:gmatch("(/.-)\n") do
local var1, var2 = l:gsub(" .* "," "):match("(.*) (.*)$")
print(var1, var2 )
end