正则表达式a,b的字符串,不包含aa

时间:2015-01-29 12:17:07

标签: regex

仅使用括号和*符号,我想到的一个例子是

((a|b)(bb*))*

但我可以有一个字符串,例如abba,最后一个字母是a,这里面没有包含......有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这是DFA:

enter image description here

Use the method described here导出并求解R1(初始状态)的等式:

R1 = bR1 + aR2 + λ
R2 = bR1 + λ

将R2替换为R1:

R1 = bR1 + abR1 + a + λ

应用阿登定理:

R1 = (b + ab)*(a + λ)

其余的是改变语法:

(b|ab)*(a|)

这可以在Perl语法中重写为regex进行测试:

^(a?b)*a?$