次のように機能するパターンを作成できるかどうか疑問に思っています。
を使用[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 が右側になります。
これを試して:
(\w+)=(\w+)
各試合には 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