Разобрать в Excel формулу "= a (b, c, d)" с помощью регулярных выражений в vb.net - PullRequest
1 голос
/ 24 декабря 2010

Я пытаюсь разобрать параметры формул 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)" и т. Д. С ограничением, что будет нет вложенные скобки или запятые?

Спасибо!

1 Ответ

0 голосов
/ 12 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...