我最近需要找出该语言的正则表达式 {w | | w |是奇数,w以字母{a,b}开头和结尾符号b}。
我想出了一个解决方案
b(ab+bb+aaab+aabb+abab+abbb+bbbb+bbab+babb+baab)*
解决方案很长,所以我希望有人可以告诉我一种可以简化的方法,
答案 0 :(得分:3)
你可以尝试b|(b(a|b)((a|b)(a|b))*b)
您描述的语言只能生成b,并且由第一个分支捕获,这是它可以生成的唯一大小为1的字符串。然后它可以产生大小3,5,7,...字符串。这些被第二个分支捕获。开头和结尾的b是不言自明的。那些占2个字符。中间位是{w | |w| is odd}
上的经典语言{a,b}
。
更强大的语法允许b((a|b)((a|b)^2)*b)?
这样的东西,它更紧凑,但相当。
答案 1 :(得分:0)
最简单的一个:
(b(a|b)(aa|ab|ba|bb)*b)|b