我想知道是否有可能制作一个可以这样工作的模式:
使用[icon=star w=32 h=32 spin=90]
,它将返回一个表格:
icon: star
w: 32
h: 32
spin: 90
我尝试过做[icon=(.-) ((.-)=(.-))]
,但它已经破了。
答案 0 :(得分:3)
Lua在字面意义上没有正则表达式。它使用模式。
因此,对于您的情况,我更倾向于使用gsub(或gmatch):
local str = "[icon=star w=32 h=32 spin=90]"
local tR = {}
str:gsub( "(%w+)%=(%w+)", function( x, y ) tR[x] = y end )
您的tR
将获得您想要的确切结果。
有关gmatch和gsub的更多教程是:
答案 1 :(得分:1)
使用以下表达式:(\w+(?=\=))=((?<=\=)\w+)
每个匹配的组1将是左侧,每个匹配的组2将是右侧。
答案 2 :(得分:0)
试试这个:
(\w+)=(\w+)
每场比赛将有两组:
答案 3 :(得分:0)
for k, v in ("[icon=star w=32 h=32 spin=90]"):gmatch("(%w+)=(%w+)")
do print(k..":",v) end
icon: star
w: 32
h: 32
spin: 90