Алгоритм создания n-го уровня вложенных шаблонов в RegEx

Как объяснено вМожно ли использовать регулярные выражения для сопоставления с вложенными шаблонами?, невозможно создать регулярное выражение для сопоставления с произвольным вложенным шаблоном. Но возможно ли создать алгоритм, который бы генерировал регулярное выражение n-го уровня «нестабильности»?

в основном я хочу заменитьtrim(whatever) сrtrim(ltrim(whatever))

мне удалось создать 3 уровня вручную (синтаксис javascript):

<code>level[1] = /\(([^()]*)\)/g
level[2] = /\(((?:[^()]*\([^()]*\))*[^()]*)\)/g
level[3] = /\(((?:(?:(?:[^()]*\([^()]*\))*[^()]*)*\((?:(?:[^()]*\([^()]*\))*[^()]*)*\))*[^()]*)\)/g
</code>

Вот некоторые тестовые данные:

<code>1st(ddd) + 1st(ddd)
2nd(dd(d))
3rd(a(b) + (cd(h) + d(dfas) + zzz))
4th(a(b(c(d))))
8th(a(b(c(d(e(f(g()))))))
</code>

я знаю это на каждом уровне[^()]* должна быть заменена группой без захвата, которая может содержать круглые скобки, но я не уверен, какgeneralize the algoritm for n-th level...

Ответы на вопрос(1)

Ваш ответ на вопрос