Java Regex - Попытка использовать регулярное выражение для получения массива аргументов «функции» - PullRequest
1 голос
/ 27 февраля 2012

У меня есть набор строк, представляющих математические функции (которые могут быть вложенными и иметь любое количество аргументов), и я хочу иметь возможность использовать регулярное выражение для возврата массива строк, каждая строка является аргументом внешнегобольшинство функций.Вот пример:

"f1(f2(x),f3(f4(f5(x,y,z))),f(f(1)))"

Я хотел бы использовать шаблон регулярного выражения, который я мог бы использовать, чтобы каким-то образом получить массив всех аргументов f1, которые в этом случае являются строками "f2 (x)", "f3 (f4 (f5 (x, y, z))) "и" f (f (1)) ".Во входной строке не будет пробелов.

Большое спасибо всем, кто может помочь.

1 Ответ

4 голосов
/ 27 февраля 2012

Я не думаю, что это можно сделать только с помощью регулярных выражений.

Это, вероятно, потребовало бы возможности определить сбалансированные скобки - например, после того, как мы проанализировали f1(f2(x), следующий символ может быть либо ), либо , - и это канонический пример что-то, что не может быть сделано с помощью регулярных выражений, но требует более сложного синтаксического анализатора.

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