Шаблон строки, соответствует первой, самой внешней паре скобок?

Итак, вот тривиальный пример, скажем, у меня есть уравнение, как

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

И я хочу захватить "((5*2)+3)"

Сначала я попробовал

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

Но * жадный, поэтому он захватил все уравнение.

Потом я попробовал

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

Но - ленивый, и его захватили "((5*2)"

Очевидно, я иду по этому поводу неправильно. Как я должен захватить скобки с шаблоном строки?

1 ответ

Решение

То, что вы ищете, это %b шаблон, который соответствует сбалансированным строкам. В этом примере вы можете использовать %b() соответствовать строке, которая начинается с (и заканчивается соответствующим ):

equation:match("%b()")
Другие вопросы по тегам