Очевидно, нужны рекурсивные регулярки.
https://regex101.com/r/SBqnii/7
С группами можно поиграться. Наверн, придётся пропускать регулярку по результату ещё раз, но думаю это проще и возможно даже быстрее использования конечного автомата. А на пример подобного автомата я бы посмотрел :)
Сравнение производительности с конечным автоматом:
https://jsperf.com/regex-vs-fsa/1