字符串模式,匹配第一个最外层的括号?

以下是一个微不足道的例子,假设我有一个方程:

local equation = "((5*2)+3)-(3^5)"

我想捕获 “((5*2)+3)”

起初我尝试了

equation:match("%((.*)%)")

*是贪婪的,因此它捕获了整个方程。

然后我尝试了

equation:match("%((.-)%)")

-是懒惰的,它捕获了 "((5*2)"

显然,我这样做是错误的。我应该如何使用字符串模式捕获括号?

点赞
用户1009479
用户1009479

你需要的是 %b 模式,它匹配平衡的字符串。在这个例子中,你可以使用 %b() 来匹配一个以 ( 开头,以相应的 ) 结尾的字符串:

equation:match("%b()")
2016-01-10 08:50:52