У меня есть функция, которая может взять строку, интерпретировать ее как вычисление и вернуть результат вычисления, примеры правильных вычислений:
3(log(e+pi^(22/3)))
44+3*(pi+2)/root(7)
функция довольно тяжелая, поэтому я хотел бы запустить ее, только если String на самом деле является вычислением. Прежде чем я добавил такие функции, как log и root, pi и e и неявное умножение, я использовал следующее регулярное выражение:
/^((-?([0-9]+?\.)?[0-9]+?)\s?([+\-*\/%^]|(\*\*))\s?)+?(-?([0-9]+?\.)?[0-9]+?)$/
, который больше не работает. На данный момент я даже не уверен, будет ли регулярное выражение иметь смысл производительности. Я ожидаю, что примерно 0,1% строк будут совпадать (что является правильным расчетом).
Есть ли у вас какие-либо идеи о том, как создать хорошо работающий регулярный
выражение (сама функция определяет погоду
Сам расчет, но это занимает много времени, поэтому нет 100% точности
необходимо) или функция, которая проверяет расчет?