如何在 Lua 中仅获取值?

我想只获取值。如何仅获取值? 是否有模式匹配?我特别困扰于 '='

DeviceName=
ManufacturerId=ABC76
SerialNo=100
ModelId=BDF2015
点赞
用户6147374
用户6147374

用于匹配的正则表达式是:

\SerialNo=(.*)
2017-11-29 02:22:31
用户8794221
用户8794221

你可以使用以下正则表达式:

^(\t| )*[a-zA-Z][a-zA-Z_0-9]*(\t| )*=(\t| )*(.*)$

和一个反向引用 $4 或者 \4

它可以完美地用于以下带空格的赋值表达式:

DeviceName  =
ManufacturerId=  ABC76
SerialNo = 100
ModelId=BDF2015

然而,请注意该正则表达式无法处理在同一行上进行多个赋值的情况!

你还需要将其适应于 局部 变量声明。

以下赋值表达式将无法正确地提取:

local d , f = 5 ,10
d , f = 5, 10;
d, f = 10
2017-11-29 03:11:52
用户107090
用户107090

你可以使用 Lua 的模式匹配来完成这个任务:

s=[[
DeviceName=
ManufacturerId=ABC76
SerialNo=100
ModelId=BDF2015
]]

for k,v in s:gmatch("(%S+)=(%S*)") do
    print(k,'['..v..']')
end

输出

DeviceName  []
ManufacturerId  [ABC76]
SerialNo    [100]
ModelId [BDF2015]
2017-11-29 10:06:25