gpt4 book ai didi

string - 当我们在 Lua 中没有 `|` 运算符时如何验证这个字符串?

转载 作者:行者123 更新时间:2023-12-05 00:27:47 24 4
gpt4 key购买 nike

我有以下形式的字符串:

cake!apple!

apple!

cake!juice!apple!cake!

juice!cake!

换句话说,这些字符串由三个子字符串 "cake!"组成。 , "apple!""juice!" .

我需要验证这些字符串。因此,使用正则表达式执行此操作的方法是:
/^(apple!|juice!|cake!)*$/

但是 Lua 的模式没有 |运营商,所以它似乎不能这样做。

如何在 Lua 中验证我的字符串?

(我不关心字符串的内容:我只关心它们是否符合(验证)。)

我知道编写代码来做到这一点,但我想不出一个简短的方法来做到这一点。我正在寻找一个简短的解决方案。我想知道是否有一个我不知道的优雅解决方案。有任何想法吗?

最佳答案

if str:gsub("%w+!", {["apple!"]="", ["juice!"]="", ["cake!"]=""}) == "" then
--do something
end

此解决方案使用表作为 string.gsub 的第二个参数.由于模式都匹配 %w+ ,表将第二次验证,只有真正的三个模式被替换为空字符串。如果全部替换后,字符串变为空,则匹配成功。

使用辅助表变量可以使其更加清晰:
local t = {["apple!"]="", ["juice!"]="", ["cake!"]=""}
if str:gsub("%w+!", t) == "" then
--do something
end

关于string - 当我们在 Lua 中没有 `|` 运算符时如何验证这个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955515/

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