Проверять математические выражения с помощью регулярных выражений?
Я хочу проверить математические выражения с помощью регулярного выражения. Математическое выражение может быть таким
он может быть пустым означает, что ничего не вводится
если указано, он всегда будет начинаться с оператора
+
или-
или*
или/
и всегда будет следовать число, которое может иметь любое количество цифр и число может быть десятичным (содержит.
в число) или целое число(без '. символ в число). примеры :*0.9
,+22.36
,- 90
,/ 0.36365
за ним может следовать то, что упоминается в пункте 2 (над линией). примеры :
*0.9+5
,+22.36*4/56.33
,-90+87.25/22
,/0.36365/4+2.33
пожалуйста, помогите мне.
2 ответов
что-то вроде этого должно работать:
^([-+/*]\d+(\.\d+)?)*
-
^
- начало строки -
[-+/*]
- один из этих операторов -
\d+
- одно или несколько чисел -
(\.\d+)?
- необязательная точка, за которой следует одно или несколько чисел -
()*
- все выражение повторяется ноль или более раз
Если вы хотите отрицательное или положительное выражение, Вы можете написать его так>^\-?[0-9](([-+/*][0-9]+)?([.,][0-9]+)?)*?$
и ^[(]?[-]?([0-9]+)[)]??([(]?([-+/*]([0-9]))?([.,][0-9]+)?[)]?)*$
со скобками в выражение, но не считать количество вам понадобится Способ для проверки или выражения. // метод
public static bool IsPairParenthesis(string matrixExpression)
{
int numberOfParenthesis = 0;
foreach (char character in matrixExpression)
{
if (character == '(')
{
numberOfParenthesis++;
}
if (character == ')')
{
numberOfParenthesis--;
}
}
if (numberOfParenthesis == 0)
{ return true; }
return false;
}