gpt4 book ai didi

string - Lua 中平衡括号的可选捕获

转载 作者:行者123 更新时间:2023-12-02 04:22:48 25 4
gpt4 key购买 nike

假设我有以下形式的行:

int[4] height
char c
char[50] userName
char[50+foo("bar")] userSchool

如您所见,括号内的表达式是可选的。

我可以使用Lua的string.match()解析这些字符串吗?

以下模式适用于包含括号的行:

line = "int[4] height"
print(line:match('^(%w+)(%b[])%s+(%w+)$'))

但是有没有一种模式可以处理可选的括号?以下内容不起作用:

line = "char c"
print(line:match('^(%w+)(%b[]?)%s+(%w+)$'))

可以用另一种方式编写模式来解决这个问题吗?

最佳答案

与正则表达式不同,Lua 模式中的 ? 匹配单个字符。

您可以使用运算符来完成这样的工作:

line:match('^(%w+)(%b[])%s+(%w+)$') or line:match('^(%w+)%s+(%w+)$')

它的一个小问题是 Lua 只将第一个结果保留在表达式中。这取决于您的需求,使用 if 语句,或者您可以像这样给整个字符串第一次捕获

print(line:match('^((%w+)(%b[])%s+(%w+))$') or line:match('^((%w+)%s+(%w+))$'))

关于string - Lua 中平衡括号的可选捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20636937/

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