正则表达式没有。字符串中的0和1奇数

时间:2015-06-01 12:39:01

标签: regex computer-science regular-language

因为我们可以开发正则表达式,比如字符串以01结尾{0,1} 喜欢(0 + 1)* 01

所以这种方式超过{0,1}我希望我的问题的答案是0和1的正则表达式都是奇数

1和0的任何组合都应该有效。

2 个答案:

答案 0 :(得分:1)

首先使用有限状态机解决此问题,然后将FSM转换为正则表达式(这总是可行的)。您可以构造一个具有四种状态的FSM:偶数,奇数,1甚至0和奇数,0甚至1和奇数。以“均匀”状态开始并以明显的方式移动; “两个奇怪的”是唯一的接受国。

有关转换,请参阅https://cs.stackexchange.com/q/2016/1531

答案 1 :(得分:0)

一般"奇怪"计算" x"是(([^x]*x){2})*[^x]*x[^x]*。使用这种表达式使用两个预测来断言字符1和0都存在奇数次:

^(?=(0*10*1)*0*10*$)(?=(1*01*0)*1*01*$).*

请参阅live demo

正则表达式基本上是2 向前看,其形式为(?=...)(其中...是表达式)和断言(不消耗) )以下输入匹配表达式。因为它不消耗输入,所以它不会移动指针,所以你可以在同一点有多个前瞻。