我想知道是否有可能制作一个可以像这样工作的模式:
使用[icon=star w=32 h=32 spin=90]
,它将返回一个包含以下内容的表:
icon: star
w: 32
h: 32
spin: 90
我试过做[icon=(.-) ((.-)=(.-))]
,但它坏了。
我想知道是否有可能制作一个可以像这样工作的模式:
使用[icon=star w=32 h=32 spin=90]
,它将返回一个包含以下内容的表:
icon: star
w: 32
h: 32
spin: 90
我试过做[icon=(.-) ((.-)=(.-))]
,但它坏了。
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 的教程是:
使用以下表达式:(\w+(?=\=))=((?<=\=)\w+)
每个匹配的第 1 组将是左侧,每个匹配的第 2 组将是右侧。
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
尝试这个:
(\w+)=(\w+)
每场比赛将有两组: