fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Получить переменные из строки математического выражения?

Задается произвольное арифметическое выражение в виде строки (используются, скажем, - только арифметические выражения - "+-*/" и скобки). Каким образом можно получить из него список переменных?
К примеру:
'345*a1+b2/34*(c12-a4-5)'
получить 'a1' , 'b2' , 'c12' , 'a4'

Дополнение - также необходимо проверять это выражение на корректность. То есть при присвоении переменным значений - выражение должно вычисляться и давать корректный ответ. То есть нужны какого-либо лексические или математические парсеры, которые именно делают разбор выражения, а не просто разбор строки регулярками.
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
deadbyelpy
@deadbyelpy
веб-шмеб
Можно регулярки применить, а можно воспользоваться либой Esprima, которая может распарсить js, построить синтаксическое дерево, и выдать все переменные.
Онлайн пример - esprima.org/demo/parse.html
Вставьте в исходный код вот это var r = 345*a1+b2/34*(c12-a4-5); к примеру, и в результате получить дерево.
Все доки там довольно подробные, для ваших нужд же понадобится одна функция esprima.parse()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
'345*a1+b2/34*(c12-a4-5)'.match(/\b([a-z][a-z0-9]*)\b/ig)
// ["a1", "b2", "c12", "a4"]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы