Я пытаюсь разобрать параметры формул Excel, такие как "= a (b)", "= a (b, c)", "= a (b, c, d)".
Я хотел бы извлечь имя функции "a" и параметры "b", "c" и "d".
На SO есть множество примеров для разбора HTML и т. Д., Но ни одного, специально для скобок.
Пока что у меня есть это "=(.+)\(([^,)]*)(,[^,)]*)*\)"
, но когда я анализирую "=a(b,c,d)"
, это ставит "a" в match (1), "b" в match (2) и ", d" в match (3) , Так что «с» теряется, а запятая перед «д» - это боль.
Как я могу разобрать строку, подобную этой, с произвольным числом параметров, в идеале отбрасывая запятые?
Было бы здорово разобрать "= a (b (c), d (e (f)))" ...
Редактировать: Я знаю, что синтаксический анализатор является правильным решением, и я использовал Отличный анализатор золота Девина Кука с отличными результатами раньше.
Однако конкретный случай, с которым я сталкиваюсь, заключается в извлечении аргументов из известной формулы Excel. В частности, если формула содержит строку "= Travel (", я знаю , что у нее будет 4 аргумента, и если они не будут проанализированы, это не проблема. Это просто функция "приятно иметь" который может иногда терпеть неудачу, не будучи проблемой.
Может ли кто-нибудь помочь мне с регулярным выражением для "= a (b, c, d)", "= a (b, c, d, e)" и т. Д. С ограничением, что будет нет вложенные скобки или запятые?
Спасибо!