local s = [[
aaa = "xyz"
bbb = "good"
ccc = "1234"
]];
-- 获取 XXX = "YYY" 格式的数据(YYYY中无引号)
function get_eq(s)
local m = {};
local r = [[%w+%s*=%s*".-"]];
for w in string.gmatch(s, r) do
local pos1,pos2=string.find(w, "%s*=%s*");
local str_k = string.sub(w, 1, pos1-1);
local str_v = string.sub(w, pos2+2, -2);
m[str_k] = str_v;
end
return m;
end
-- 显示获取的结果
local m = get_eq(s);
for k,v in pairs(m) do
print("[" .. k .. "]=(" .. v .. ") " .. type(v));
end
aaa = "xyz"
bbb = "good"
ccc = "1234"
]];
-- 获取 XXX = "YYY" 格式的数据(YYYY中无引号)
function get_eq(s)
local m = {};
local r = [[%w+%s*=%s*".-"]];
for w in string.gmatch(s, r) do
local pos1,pos2=string.find(w, "%s*=%s*");
local str_k = string.sub(w, 1, pos1-1);
local str_v = string.sub(w, pos2+2, -2);
m[str_k] = str_v;
end
return m;
end
-- 显示获取的结果
local m = get_eq(s);
for k,v in pairs(m) do
print("[" .. k .. "]=(" .. v .. ") " .. type(v));
end
本文介绍了一种使用Lua语言解析特定格式字符串的方法。通过定义正则表达式匹配模式,该方法能够从类似配置文件的字符串中提取键值对,并将它们转换为Lua表,方便进一步处理与应用。
1786

被折叠的 条评论
为什么被折叠?



