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

これを試して:

(\w+)=(\w+)

各試合には 2 つのグループがあります。

  • グループ1は「名前」になります
  • グループ 2 は「値」になります。
于 2013-03-20T21:40:13.163 に答える
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 に答える