Answer the question
In order to leave comments, you need to log in
Get variables from math expression string?
Задается произвольное арифметическое выражение в виде строки (используются, скажем, - только арифметические выражения - "+-*/" и скобки). Каким образом можно получить из него список переменных?
К примеру:
'345*a1+b2/34*(c12-a4-5)'
получить 'a1' , 'b2' , 'c12' , 'a4'
Дополнение - также необходимо проверять это выражение на корректность. То есть при присвоении переменным значений - выражение должно вычисляться и давать корректный ответ. То есть нужны какого-либо лексические или математические парсеры, которые именно делают разбор выражения, а не просто разбор строки регулярками.
Answer the question
In order to leave comments, you need to log in
Можно регулярки применить, а можно воспользоваться либой Esprima, которая может распарсить js, построить синтаксическое дерево, и выдать все переменные.
Онлайн пример - esprima.org/demo/parse.html
Вставьте в исходный код вот это var r = 345*a1+b2/34*(c12-a4-5);
к примеру, и в результате получить дерево.
Все доки там довольно подробные, для ваших нужд же понадобится одна функция esprima.parse()
'345*a1+b2/34*(c12-a4-5)'.match(/\b([a-z][a-z0-9]*)\b/ig)
// ["a1", "b2", "c12", "a4"]
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question