Ще проверя прости математически изрази такива:
a = 1 + 2
b = 2.2
a = b + 5.5
a = b - -5.5
a = -1 + 2
a = -2.4
a = 3.5 / 0.2 + 1
a = 3 * -2.1
ЗАБЕЛЕЖКА: Предимството на оператора не е важно!
Опитвам се следните изрази, но аз нямам нищо !!!
for digits: ^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$
for operators: [-]|[+]|[*]|[/]
for variables: [a-z]+|[A-Z]+
Сложих тези изрази в C # променливи и използвах Regex.Matches(...)
за да намерите съвпадения. Но нямам нищо!
Отговори:
3 за отговор № 1Това не е чудесна работа за редовни изрази. Ако искате да оцените истинския математически израз, няма да можете да излезете с regex, който може да се справи с всички случаи. Както каза Карл Норум, това е подобна дискусия за това защо не можете да разберете html с regex.
1 за отговор № 2
Опитвам:
for digits: ((-[0-9]|[0-9])(.[0-9])|[0-9])
for operators: (-|+|*|/)
for variables: ([a-z]|[A-Z])
Те изглеждаха добре, когато се тестваха в регулатора.
РЕДАКТИРАНЕ
Първият може да е малко "помия", аз изтича на обяд време да се забъркваш с него: P
0 за отговор № 3
Писането на добри регулярни изрази дори за прости неща е по-трудно, отколкото изглежда. Започнете с доказани изрази и променете, ако е необходимо:
Ако не можете да намерите пример, те имат форум, посветен точно на този въпрос.