接受空字符串以及其他字符串的DFA的正则表达式

时间:2017-03-06 11:19:22

标签: regex finite-automata dfa nfa

对于以下 DFA NFA

enter image description here

我制作了RE

(a + b)(ab)*

然而,我意识到我的RE不接受空字符串,因为它只接受以ab开头的字符串,而 DFA NFA也接受空字符串,因为初始状态是接受状态。

DFA NFA的有效RE是多少?

我会想到一些事情
Ø + (a + b)(ab).*

但我怀疑这种语法是否被接受。

修改

我也刚刚意识到我所做的例子是NFA,但这是问题的重点。

2 个答案:

答案 0 :(得分:0)

(a + b)*将是您在问题标题中提到的答案。使用*,表示您可以使用空字符串。 a + b表示您可以选择a或b。所以最后你可以反复选择a或b。

答案 1 :(得分:0)

以下表达式如何?

^(|[ab](ab)*)$

接受空字符串,或者ab之前没有或多次的序列,前面有ab

但这取决于确切的正则表达式方言,如果这可以解决你的问题。