V
V
Vladimir Kuts2016-07-19 16:16:03
JavaScript
Vladimir Kuts, 2016-07-19 16:16:03

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

2 answer(s)
P
Push Pull, 2016-07-19
@fox_12

Можно регулярки применить, а можно воспользоваться либой Esprima, которая может распарсить js, построить синтаксическое дерево, и выдать все переменные.
Онлайн пример - esprima.org/demo/parse.html
Вставьте в исходный код вот это var r = 345*a1+b2/34*(c12-a4-5); к примеру, и в результате получить дерево.
Все доки там довольно подробные, для ваших нужд же понадобится одна функция esprima.parse()

A
Andrey Burov, 2016-07-19
@BuriK666

'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 question

Ask a Question

731 491 924 answers to any question