Прежде всего, если ожидается, что структура формулы изменится, вы должны , а не использовать регулярное выражение. Если это так, вы должны использовать пакет типа extract-brackets .
Если формула не собирается существенно менять свою структуру, вы можете использовать это регулярное выражение:
/\w{2,}\((.+?)\)(?=(\+\w{2,}|$))/gm
https://regex101.com/r/wBrheL/1/
Это даст вам следующие группы:
- (a + b) *c
- (a *c) + b
- (a- c) / b
- (a-c + d) / b
Подробное объяснение вы можете найти по ссылке. Человекочитаемое объяснение состоит в том, что он ищет слова с 2 или более символами \w{2,}
, начинает извлекать и останавливается, пока не найдет другое слово с 2 или более символами или концом строки $