Я борюсь с выражением регулярного выражения в VB.Net.Поскольку я новичок в regex, я не знаю, как решить эту проблему.
Моя цель - построить калькулятор, и я хочу иметь возможность вычислять sin, cos и tan.Моя входная строка для одного из этих вычислений, например, может быть sin(93) + tan(2) + cos(364) + 5 * 3
.
Я использовал MathParser для вычисления, и это прекрасно работает, однако по умолчанию MathParser использует радианы,и я хочу, чтобы опция переключилась на десятичную.В моей форме есть элемент управления, который устанавливает логическое значение isRad
в значение false, когда пользователь выбирает десятичную, и наоборот.Чтобы использовать десятичные дроби в MathParser, входная строка должна иметь вид sin(93*[dec]) + tan(2*[dec]) + cos(364*[dec]) + 5 * 3
.
Я попытался использовать регулярное выражение, чтобы найти, где во входном коде у меня есть функции sine, cos или tan.Я придумал (sin|cos|tan)\(.?.?.?.?.?.?\)
, но я знаю, что это не совсем блестящее выражение.Однако, даже если это было идеально, мой вопрос касается того, как поместить в строку требуемый *[rad]
или *[dec]
.Я пробовал следующее, но я просто получаю (sin|cos|tan)\(.?.?.?.?.?.?\*[dec])
в качестве вывода.
Dim equationString As String = Regex.Replace("sin(93) + tan(2) + cos(364) + 5 * 3", "(sin|cos|tan)\(.?.?.?.?.?.?\)", "(sin|cos|tan) \ (.?.?.?.?.?.?*[" & Str_RadOrDec & "]\)")
MsgBox(equationString)