首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua: Regex和Lua模式

Lua: Regex和Lua模式
EN

Stack Overflow用户
提问于 2021-02-19 00:59:51
回答 1查看 123关注 0票数 0
代码语言:javascript
复制
local code = [[
client_script 'Bait.lua'

client_script 'Test.lua' --Test
]]

我如何创建一个接受client_script '' --Test之间的所有内容的正则表达式/模式

EN

回答 1

Stack Overflow用户

发布于 2021-02-19 22:05:05

code似乎是Lua代码,因此,如果使用等价但不同的代码段("而不是'、括号、换行符、多行注释等),则任何基于模式的解决方案都将失败。为什么不把它解析为Lua呢?

代码语言:javascript
复制
local code = [[
client_script 'Bait.lua'

client_script 'Test.lua' --Test
]]

local scripts = {}
local newenv = {
  client_script = function(name)
    table.insert(scripts, name)
  end
}

load("local _ENV=...;"..code)(newenv)

for i, v in ipairs(scripts) do
  print(v)
end

这将解析并加载代码,但是使用具有不同client_script定义的newenv作为环境来存储值。请注意,FiveM还使用了client_scripts和其他几个必须提供的函数(但大多数函数可以简单地指定为function()end)。

此外,上面的代码只适用于Lua 5.2和更高版本。Lua5.1的不同之处在于load的代码行,必须将其更改为:

代码语言:javascript
复制
setfenv(loadstring(code), newenv)()

原因是在5.2中合并了loadloadstring,并且访问环境仅定义为访问_ENV变量,因此不再有特定的环境附加到函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66264574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档