我想知道是否有可能做出可能像這樣工作模式:匹配沒有以上的Lua模式
隨着[icon=star w=32 h=32 spin=90]
,它會返回一個表:
icon: star
w: 32
h: 32
spin: 90
我已經嘗試做[icon=(.-) ((.-)=(.-))]
,但它打破。
我想知道是否有可能做出可能像這樣工作模式:匹配沒有以上的Lua模式
隨着[icon=star w=32 h=32 spin=90]
,它會返回一個表:
icon: star
w: 32
h: 32
spin: 90
我已經嘗試做[icon=(.-) ((.-)=(.-))]
,但它打破。
使用以下表達式:(\w+(?=\=))=((?<=\=)\w+)
每場比賽的組1將是左側,每場比賽的組2將是右側。
這是在lua中無效的正則表達式語法 – 2013-03-20 21:50:10
@ m.buettner - POSIX再次阻止我。對不起,我沒有對那個人進行盡職調查。 – Daedalus 2013-03-20 21:56:10
嘗試這種情況:
3210每個匹配將有兩組:
這是在lua中無效的正則表達式語法 – 2013-03-20 21:50:51
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是:
完美地工作。謝謝! – user2150130 2013-03-21 08:31:21
您可以將答覆標記爲已接受,以便該問題不會列爲未答覆。 @ user2150130 – hjpotter92 2013-03-21 08:33:57
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
輸入有 「旋= 90」,但你說你想要得到「自旋:32「作爲輸出。這是故意翻譯還是錯字? – 2013-03-20 21:33:32
你不能使用正則表達式格式化結果不同......但你可以使用正則表達式來拉出組中的相關信息,然後打印那些結果,但是你需要它們 – Daedalus 2013-03-20 21:35:58
是的,我寫這個時候已經很晚了,所以我可能會做了一些拼寫錯誤。抱歉! – user2150130 2013-03-21 08:25:19