2012-04-18 10 views
1

次の2つの属性を持つ 'a'と 'b'を含む文字列の正規表現を検索しています: 1:文字列に偶数の文字があります 2: ^(ab|bb|(ba(?!a)))*$特定の条件で文字列を検索する

基本的には文字列は任意の順序で混合abbbba部分文字列で構成されなければならないと言う、しかしbaは別に従うことができない:それは簡単にPerl互換の正規表現で行うことができる「AA」

+2

1つの正規表現で。 – kirilloid

+0

3つの正規表現でこれを行うことができるはずです。各条件に1つ:P – ArjunShankar

+0

文字列には 'a'と' b'または 'abcd'だけが有効な文字列ですか? – Toto

答えて

0

が含まれています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