100(0|1)*
(0|1)01(0|1)
这两个正则表达式一样吗
不一样
1*00*(0|1)* 是匹配0个或多个1,一个0,0个或多个0,0个或多个(0或1)
(0|1)*01(0|1)* 是匹配0个或多个(0或1),一个0,一个1,再0个或多个(0或1)
你需要的结果是什么样的
第一直觉是不一样,后来仔细看了看,还是完全一样
1*00*1(0|1)*,(0|1)*01(0|1)*
去掉所有带*长度修饰的内容后,两个正则都只剩下 01
虽然描述方式并不一致,但结果是一样的
先看第二个正则,只要是由01组成,且包含片段01,就符合
再看第一个正则,同样要求由01组成,任意多个1然后1个0,然后任意多个0然后1个1,然后任意多个0或1
那么,问题来了,因为都包含了(0|1)*结尾的片段,且整个匹配都是由0和1组成的,那么,只要在出现01片段前,能够等价,这两个正则就完全一致了
那么,我们来看,101,001,第二个正则肯定没问题,第一个正则。。。好吧,也没问题,那么就等价了
任意由0和1组成的字符串,且包含01片段的,都符合上述两个正则