Шаблон строки, соответствует первой, самой внешней паре скобок?
Итак, вот тривиальный пример, скажем, у меня есть уравнение, как
local equation = "((5*2)+3)-(3^5)"
И я хочу захватить "((5*2)+3)"
Сначала я попробовал
equation:match("%((.*)%)")
Но *
жадный, поэтому он захватил все уравнение.
Потом я попробовал
equation:match("%((.-)%)")
Но -
ленивый, и его захватили "((5*2)"
Очевидно, я иду по этому поводу неправильно. Как я должен захватить скобки с шаблоном строки?
1 ответ
Решение
То, что вы ищете, это %b
шаблон, который соответствует сбалансированным строкам. В этом примере вы можете использовать %b()
соответствовать строке, которая начинается с (
и заканчивается соответствующим )
:
equation:match("%b()")