2014-10-28 3 views
-1

사용자가 입력 한 조건부/관계형/논리식을 Regex를 사용하여 분할하여 런타임에 사용자가 입력 한 표현식을 평가할 수 있도록합니다. 아래는 사용자가 입력 한 몇 가지 예제 표현입니다.C#에서 사용자가 입력 한 표현식을 평가하거나 유효성을 검사하는 정규 표현식

Expression1 : (a==b && (c >= 10 || d!=0)) || (a > b) 

Expression2 : (c==d && a==b) 

는 지금은 2 식을 예를 들어 문자열 배열에서 전체 식을 분할 할 및 사용자가 입력 한

string str1 = c==d; 
string str2 = a==b; 

표현 여러 조건을 가질 수 있으며, 따라서 진행하는 방법을 잘 모릅니다처럼이 될 것입니다.

감사

+2

왜 '&&'로 문자열을 분할하지 않습니까? 또 다른 질문은 다음과 같습니다. 식 1에서 벗어나기를 기대 하시겠습니까? 괄호는 어떻게 처리해야합니까? – C4u

+0

@ C4ud3x - 예, 어떻게 처리되어야하며 항상 다음 번에 사용자가 입력 할 수있는 문제를 해결하지는 않습니다. 또는 기타 – sia

+2

Hah. 야, 나 한테 물어 봐야 해. 나는 네가 어떻게 그것을 원하는지 묻는다. 어쩌면 코드를 작성하는 방법을 알려줄 수도 있지만, 코드가 어떻게 작동하는지 알고 있어야합니다. 당신의 목표에 크게 의존합니다. – C4u

답변

1

정규 표현식은이 작업에 적합한 도구 아니다.

임의의 표현식을 평가하려면 최소한 간단한 구문 분석기를 구현하거나 사용해야합니다.

이전에는 간단한 표현 평가 작업을 위해 NCalc을 사용했습니다. 사용하기 쉽고 operators을 즉시 사용할 수 있으며 variables을 사용할 수도 있습니다.

사용할 수있는 다른 라이브러리가 있습니다. 이것은 단지 예일뿐입니다. 파서를 직접 구현할 수도 있지만 생각보다 어렵습니다.