2013-10-31 2 views
0

수학 방정식 구문이 사실인지 확인하는 정규 표현식을 작성하려고합니다. 여러 번 시도했지만 원하는 것을 얻지 못했습니다. 피연산자과 작업 사이에 공백을수학 방정식의 유효성 확인

op1 = op2 [+-*/%^] number or op3* 

허용 중첩 괄호

op1 = (op2 [+-*/%^] (op3 [+-*/%^] op4)) [+-*/%^] op5 or number* 

또한 두 표현식의 병합을 허용하고 허용 :

나는 다음과 같은 경우를 처리 할 수있는 정규 표현식을 찾기 위해 여러분의 도움이 필요합니다

+4

당신의 정규식 엔진은 재귀 정규 표현식에를 지원하지 않는 경우 http://scriptasylum.com/tutorials/infix_postfix/algorithms/postfix-evaluation/

좋은, 너는 운이 없어. 재귀 적 디센트 알고리즘을 사용하여 이들의 유효성을 검사합니다. 어쩌면 당신은 괄호를 계산하고 각 용어를 정규식으로 검증함으로써 운이 좋을 수도 있지만, 일부 구석을 놓칠 수밖에 없습니다. – knittl

+0

이 질문을보십시오 : http://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net – germi

+0

.NET Regex 엔진은 그룹 밸런싱을 통해 재귀를 허용합니다. –

답변

2

나는 정규 표현식이 작업을 수행하려고했지만이 매우 힘들었다, 내가 스택을 사용하여 식의 유효성 검사를하고 작동