gpt4 book ai didi

lua - 如何获取 lua 字符串匹配来解析环境变量字符串?

转载 作者:行者123 更新时间:2023-12-02 09:31:25 24 4
gpt4 key购买 nike

我有一个用 lua 编写的配置文件解析器。

我想检测环境变量的值并使用 os.getenv 更改它们。

这可能有点雄心勃勃,因为我可以拥有这样的值(value)观

"a string with an embedded ${VARIABLE} in here"

"another string with an env $VARIABLE"

我可能应该允许使用双 $$ 转义它们以允许文字 $。

我该怎么做?

这是我目前所拥有的,但它是不正确的

local envvar = string.match(value, "%$([%w_]+)")
if envvar then
print("Envvar=", envvar)
value = value:gsub("(%$[%w_]+)", os.getenv(envvar))
end

例如,我不知道如何使用此处的 %b 平衡选项来正确匹配 { } 组合。并使它们成为可选的。如何使这项工作稳健地进行?

事实上,我意识到事情可能比这更复杂。如果指定了多个环境变量怎么办?

最佳答案

local text = [[
Example: ${LANG}, $TEXTDOMAINDIR, $$10.00, $$LANG, $UNDEFINED
Nested braces: {{${SHELL}}}
]]
text = text:gsub('$%$','\0')
:gsub('${([%w_]+)}', os.getenv)
:gsub('$([%w_]+)', os.getenv)
:gsub('%z','$')
print(text)
--> Example: en_US.UTF-8, /usr/share/locale/, $10.00, $LANG, $UNDEFINED
--> Nested braces: {{/bin/bash}}

关于lua - 如何获取 lua 字符串匹配来解析环境变量字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32772206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com