1

我想知道是否有可能制作一个可以像这样工作的模式:

使用[icon=star w=32 h=32 spin=90],它将返回一个包含以下内容的表:

icon: star  
w: 32  
h: 32  
spin: 90

我试过做[icon=(.-) ((.-)=(.-))],但它坏了。

4

4 回答 4

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 的教程是:

于 2013-03-20T21:40:59.607 回答
1

使用以下表达式:(\w+(?=\=))=((?<=\=)\w+)每个匹配的第 1 组将是左侧,每个匹配的第 2 组将是右侧。

示例:http ://regexr.com?3478b

于 2013-03-20T21:32:25.417 回答
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
于 2013-03-21T03:35:20.627 回答
0

尝试这个:

(\w+)=(\w+)

每场比赛将有两组:

  • 第 1 组将是“名称”
  • 第 2 组将是“价值”
于 2013-03-20T21:40:13.163 回答