关于Kleene星的混淆

时间:2017-04-11 18:45:01

标签: regex automata dfa

我一直在努力理解关于两个union'ed表达式的关闭的一个关键属性。基本上我需要确切知道Kleene星是如何工作的。

I.E 如果正则表达式R =(0 + 1)*表达式是否必须评估为类似000111/01/00001111,或者我们是否可以得到不等量的0& 1,如0011111/000001/111111/0000?

1 个答案:

答案 0 :(得分:2)

0和1的数量可能不相等;你甚至可以按任何顺序拥有0和1! a*表示"零个或多个a s,其中每个a都是独立评估的,并且#34 ;;因此,在匹配(0+1)*的字符串中,每个字符都可以匹配(0+1),而不考虑字符串中其他字符如何匹配它。

考虑模式(0+1)(0+1);它匹配字符串00011011。正如您所看到的,0和1不必以相同的数量发生,并且不必以任何特定的顺序发生。 Kleene星将其扩展为任意长度的弦;毕竟,(0+1)*只意味着<empty>+(0+1)+(0+1)(0+1)+(0+1)(0+1)(0+1)+ ...