我正在寻找语言的正则表达式,其中包含 k a 的确切数字。
我几乎坚持这一点。对于不同的长度,使用可以很容易地解决问题。
有没有人对如何实现这样的正则表达式有任何建议?
答案 0 :(得分:2)
我会用这个:
(b*ab*){k}
它只使k个块包含一个a。因此,单词有k a。 其中一个b *可以在左侧或右侧分解。
答案 1 :(得分:1)
此处没有简单的解决方案。
虽然这种语言是常规的,但描述起来却很难看。您可以通过将两种语言((a|b)^n
和b*(ab*)^k
)的(普通)DFA相互交叉来获得它,但是您将获得一个返回(n-k)*k
个状态的DFA。并将其转换为正则表达式不会使它变得更好。
但是,如果您正在寻找实际的实现,它会变得更容易。您可以简单地针对两个正则表达式测试输入,或者您可以使用lookahead将它们组合成一个正则表达式:
/^(?=[ab]{n}$)b*(ab*){k}$/
答案 2 :(得分:0)