2013-07-25 5 views
2

난 내 표현정규식 일치 복잡한 표현

A > 16 
A <= 16 and A >= 1 
A < 40 or A > -40 
A != 19 and A > 50 and A != 8 
A > 1 or A < 2 

의 다음 예 내가 하나의 정규식 이러한 평가를 할 수있는했습니다?

는 basicly

  1. > < = ! - != >= <=
  2. 가있는 다음 sympols이 and/or 연산자보다 먼저 공간이 될 수 있도록하고, A 후에 경우에만이 아니 첫 글자.
  3. 내 변수는 항상이 경우이 시간을 도움이되지 않았다 A

구글 인, 일정 그리고 난, 좋은 것 같은 일을 실현하려 방법에 대한 가이드 정규식 정말 새로운 오전

답변

2

이런 식으로 뭔가 작업을해야합니다 :

^A ([<>!]=?|=) -?\d+((and|or) A ([<>!]=?|=) -?\d+)*$ 

그것은A이 comparitors < 중 하나를 사용하여 일부 양 또는 음의 정수와 비교 표현 가능 210, !는, <=는, >=!=은, 베이 별도의 기호로 !!=을 나열 and 또는 or —에 의해 분리 된 다른 유사한 표현의 수, 다음, 그래서 비교기 등을 모두 허용 한, 즉 내 솔루션은 실제로 표현을 할 수 있습니다 A ! 2입니다. 이것이 바람직하지 않으면 위의 패턴에서 ([<>!]=?|=)([<>]=?|!?=)으로 대체하십시오.

here을 테스트해볼 수 있습니다.

^(A ([<>!]=?|=) -?\d+((and|or) |$))+$ 
+0

내가, 내가 당신에게 +10을 줄 수 있으면 좋겠다 당신에게 완벽한 감사합니다 :

다음은뿐만 아니라 시도 할 수있는 약간 단순화 된 버전입니다. – user1590636

+0

@ user1590636 도와 줘서 기쁩니다. 행복한 코딩. –