/ / Необходим е редовен израз за откриване на прости математически изрази - c #, .net, regex

Нуждаете се от регулярен израз за откриване на прости математически изрази - c #, .net, regex

Ще проверя прости математически изрази такива:

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

Писането на добри регулярни изрази дори за прости неща е по-трудно, отколкото изглежда. Започнете с доказани изрази и променете, ако е необходимо:

http://regexlib.com

Ако не можете да намерите пример, те имат форум, посветен точно на този въпрос.