我正在搜索包含'a'和'b'的字符串的正则表达式,该字符串具有以下两个属性: 1:String具有偶数个字符 2:字符串可能不包含'aa'
答案 0 :(得分:1)
标准(旧)正则表达式是可能的:
(ab|bb|(ba)*bb)*(ba)*
答案 1 :(得分: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
答案 2 :(得分:0)
使用Perl兼容的正则表达式可以轻松完成:
^(ab|bb|(ba(?!a)))*$
基本上它表示字符串必须包含以任何顺序混合的ab
,bb
,ba
子字符串,但ba
不能跟随另一个a
字符。
字符串将具有均匀长度,因为所有这些子表达式都具有均匀长度。 aa
不能出现在字符串中,因为它出现的唯一方法是在子字符串baab
中,但正则表达式明确限制ba后跟a
。