我一直在努力理解关于关闭两个联合表达式的一个关键属性。基本上我需要知道 Kleene star 是如何工作的。
I.E 如果正则表达式 R = (0+1)* 表达式的计算结果是否必须类似于 000111/01/00001111,或者我们是否可以有不等量的 0 和 1,例如作为 0011111/000001/111111/0000?
最佳答案
0 和 1 的数量可以不相等;您甚至可以按任何顺序使用 0 和 1! a*
表示“零个或多个 a
s,其中每个 a
都是独立评估的”;因此,在匹配 (0+1)*
的字符串中, 每个字符都可以匹配(0+1)
不考虑字符串中的其他字符如何匹配它。
考虑模式 (0+1)(0+1)
;它匹配字符串 00
, 01
, 10
, 和 11
.如您所见,0 和 1 不必等量出现,也不必以任何特定顺序出现。 Kleene star 将其扩展到任何长度的字符串;毕竟,(0+1)*
只是意味着 <empty>+(0+1)+(0+1)(0+1)+(0+1)(0+1)(0+1)+ ...
.
关于regex - 关于 Kleene 星的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353912/