关于克莱恩星的困惑



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

如果正则表达式 R = (0+1(* 表达式的计算结果是否必须为 000111/01/00001111,或者我们可以有不等量的 0 和 1,例如 0011111/000001/111111/0000?

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

考虑模式(0+1)(0+1);它匹配字符串00011011。 如您所见,0 和 1 不必以相等的数量出现,也不必以任何特定顺序出现。 克莱恩星将其扩展到任何长度的弦;毕竟,(0+1)*只是意味着<empty>+(0+1)+(0+1)(0+1)+(0+1)(0+1)(0+1)+ ....

最新更新