字符串模式,匹配第一个,最外面的一对括号?
String pattern, match the first, outermost pair of brackets?
所以这是一个简单的例子,假设我有一个等式
local equation = "((5*2)+3)-(3^5)"
而且我想捕获"((5*2)+3)"
一开始我试过
equation:match("%((.*)%)")
但是*
是贪心的,所以它捕获了整个等式。
然后我试了
equation:match("%((.-)%)")
但是-
偷懒了,抓到了"((5*2)"
很明显我做错了。我应该如何用字符串模式捕获括号?
您要查找的是 %b
模式,它匹配平衡字符串。在本例中,您可以使用 %b()
匹配以 (
开头并以对应的 )
:
结尾的字符串
equation:match("%b()")
所以这是一个简单的例子,假设我有一个等式
local equation = "((5*2)+3)-(3^5)"
而且我想捕获"((5*2)+3)"
一开始我试过
equation:match("%((.*)%)")
但是*
是贪心的,所以它捕获了整个等式。
然后我试了
equation:match("%((.-)%)")
但是-
偷懒了,抓到了"((5*2)"
很明显我做错了。我应该如何用字符串模式捕获括号?
您要查找的是 %b
模式,它匹配平衡字符串。在本例中,您可以使用 %b()
匹配以 (
开头并以对应的 )
:
equation:match("%b()")