如何正确进行Lua模式匹配搜索?

我试图进行模式搜索,但它不起作用。我有以下代码:

vars = "CmdTurn.on=off/GetPar.pwd=true"

_GET = {}
for k, v in string.gmatch(vars, "(%w+)(%p+)(%w+)=(%w+)&*") do
  _GET[k] = v
  print(k..":"..v)
end

运行此代码后,我希望看到以下结果:

CmdTurn.on:off
GetPar.pwd:true

但是它没有起作用。出现的错误结果是:

CmdTurn:.
GetPar:.

可以有人帮帮我吗?

点赞
用户1009479
用户1009479

在模式 (%w+)(%p+)(%w+)=(%w+)&*中有多个捕获组,所以 kv 获取到的是前两个捕获的结果,这不是你想要的。

试试这样写:

for k, v in string.gmatch(vars, "(%w+%p+%w+)=(%w+&*)") do
  print(k..":"..v)
end
2016-01-01 04:31:25