Lua 模式 returns 获取括号之间的多个子字符串时匹配错误
Lua pattern returns wrong match when fetching multiple substrings between brackets
所以我遇到了正则表达式的问题。如下所示,我使用正则表达式“CreateRuntimeTxd%(.*%)”
local _code = [[
Citizen.CreateThread(function()
local dui = CreateDui("https://www.youtube.com/watch?v=dQw4w9WgXcQ", 1920, 1080)
local duiHandle = GetDuiHandle(dui)
CreateRuntimeTextureFromDuiHandle(CreateRuntimeTxd('rick'), 'nevergonnagiveuup', duiHandle)
while true do
Wait(0)
DrawSprite('rick', 'nevergonnagiveuup', 0.5, 0.5, 1.0, 1.0, 0, 255, 255, 255, 255)
end
end)
]]
for match in string.gmatch(_code, "CreateRuntimeTxd%(.*%)") do
print(match)
end
所以问题是当前正则表达式匹配
CreateRuntimeTxd('rick'), 'nevergonnagiveuup', duiHandle)
while true do
Wait(0)
DrawSprite('rick', 'nevergonnagiveuup', 0.5, 0.5, 1.0, 1.0, 0, 255, 255, 255, 255)
end
end)
但我只希望它匹配 CreateRuntimeTxd('rick')
你需要使用
for match in string.gmatch(_code, "CreateRuntimeTxd%(.-%)") do
print(match)
end
见Lua demo。 详情:
CreateRuntimeTxd
- 文字文本
%(
- 文字 (
字符
.-
- 零个或多个字符(完成匹配所需的最少数量)
%)
- 一个 )
字符。
也可以使用取反符class、[^()]*
(如果)
前不能有(
和)
)或[^)]*
(如果仍需要 )
个字符)而不是 .-
:
for match in string.gmatch(_code, "CreateRuntimeTxd%([^()]*%)") do
print(match)
end
参见 this Lua demo。
所以我遇到了正则表达式的问题。如下所示,我使用正则表达式“CreateRuntimeTxd%(.*%)”
local _code = [[
Citizen.CreateThread(function()
local dui = CreateDui("https://www.youtube.com/watch?v=dQw4w9WgXcQ", 1920, 1080)
local duiHandle = GetDuiHandle(dui)
CreateRuntimeTextureFromDuiHandle(CreateRuntimeTxd('rick'), 'nevergonnagiveuup', duiHandle)
while true do
Wait(0)
DrawSprite('rick', 'nevergonnagiveuup', 0.5, 0.5, 1.0, 1.0, 0, 255, 255, 255, 255)
end
end)
]]
for match in string.gmatch(_code, "CreateRuntimeTxd%(.*%)") do
print(match)
end
所以问题是当前正则表达式匹配
CreateRuntimeTxd('rick'), 'nevergonnagiveuup', duiHandle)
while true do
Wait(0)
DrawSprite('rick', 'nevergonnagiveuup', 0.5, 0.5, 1.0, 1.0, 0, 255, 255, 255, 255)
end
end)
但我只希望它匹配 CreateRuntimeTxd('rick')
你需要使用
for match in string.gmatch(_code, "CreateRuntimeTxd%(.-%)") do
print(match)
end
见Lua demo。 详情:
CreateRuntimeTxd
- 文字文本%(
- 文字(
字符.-
- 零个或多个字符(完成匹配所需的最少数量)%)
- 一个)
字符。
也可以使用取反符class、[^()]*
(如果)
前不能有(
和)
)或[^)]*
(如果仍需要 )
个字符)而不是 .-
:
for match in string.gmatch(_code, "CreateRuntimeTxd%([^()]*%)") do
print(match)
end
参见 this Lua demo。