С помощью regex я создал программу, которая решает математические выражения.Он прекрасно работает, за исключением таких выражений, как: (123.45*(678.90 / (-2.5+ 11.5)-(((80 -(19))) *33.25)) / 20) - (123.45*(678.90 / (-2.5+ 11.5)-(((80 -(19))) *33.25)) / 20) + (13 - 2)/ -(-11)"
.
Моя программа решает проблему, выполняя следующие шаги: 
Результат долженбыть точно 1 , но немного больше.Моя программа зацикливается, пока не будет единственного числа в правильном формате.Я думаю, я могу переписать регулярное выражение, чтобы оно принимало числа в научном формате, но все равно это вернуло бы неправильный ответ.Как мне с этим бороться?Моя программа использует следующую строку:
while (!Regex.IsMatch(expression, @"\A([+-]?[0-9]*(?:\.[0-9]*)?)\Z"))