2012-04-18 6 views
1

다음과 같은 두 가지 특성을 갖는 'a'와 'b'가 포함 된 문자열에 대해 정규식을 검색하고 있습니다. 1 : 문자열의 짝수 문자가 2 : 문자열이 그렇지 않을 수 있습니다. 'AA'가 포함특정 조건의 문자열 검색

+2

하나의 정규식으로. – kirilloid

+0

세 가지 정규 표현식을 사용하여이를 수행 할 수 있어야합니다. 각 조건에 하나 : P – ArjunShankar

+0

문자열에'a'와'b' 또는'abcd' 만 유효한 문자열입니까? – Toto

답변

0
쉽게 펄 호환 정규 표현식을 수행 할 수 있습니다

: ^(ab|bb|(ba(?!a)))*$

은 기본적으로 그것은 문자열이 임의의 순서로 혼합 ab, bb, ba 문자열로 구성해야하지만, ba 다른를 따라 수 없다는 a 문자.

문자열의 길이는 짝수이기 때문에 모든 부분 식의 길이가 같습니다. aa은 문자열에 표시 할 수 없습니다. 문자가 표시되는 유일한 방법은 부분 문자열 baab이지만 정규 표현식에서는 ba가 a이되도록 구체적으로 제한합니다.

1

그것은 표준 수 (구) 정규식 :

(ab|bb|(ba)*bb)*(ba)*

1

방법에 대해 :

/(?=^(?:..)+$)(?!aa)(?=.*a)(?=.*b)/ 

설명 : 그렇게하는 것이 거의 불가능하다

/   : delimiter 
      : control there are an even number of char 
    (?=  : positive lookahead 
    ^ : begining of string 
    (?: : non capture group 
     .. : 2 characters 
    )+ : one or more times 
    $  : end of string 
) 
      : control there aren't aa 
    (?!  : negative look ahead 
    aa : aa 
) 
      : control there is at least an a 
    (?=  : positive lookahead 
    .*a : at least an a 
) 
      : control there is at least a b 
    (?=  : positive lookahead 
    .*b : at least a b 
) 
/  : delimiter