![](/img/trans.png)
[英]Using Regex To match Binary Strings that have an odd number of 0s and even number of 1s
[英]Regex of binary strings that have at least one 1 and an even number of 0
我想找到一个至少有一个 1 和偶数个 0 的正则表达式二进制字符串表达式。
对于偶数为 0 的字符串,我有:
1*(01*01*)*
对于至少有一个 1 的字符串,我有:
0*1(0+1)*
但是,我很难将两者结合在一起。 谁能给我一个关于如何做的提示? 谢谢!
没有任何花哨的正则表达式,只需^
start、 $
end锚点和|
pipe ,怎么样
^(00)*(1|01+0)(1*01*0)*1*$
应该是不言自明的。 在 regex101 使用它。 希望我没有忽略任何事情:)
如果允许环视,我也可以考虑一个负面的: ^(??0*$)(::1*01*0)*1*$
我不确定我是否正确理解了您的要求,但是如果+
应该代表交替(通常是|
),并且只允许*
、 +
和括号(正如您在下面的评论所示),那么
(1*01*01*)*(11*+011*0)(1*01*01*)*
应该管用。
这个想法是必须存在一个1
,使得它的左右必须是相等数量的0
s,或者它的左右必须是奇数的0
s: (11*+011*0)
您的0*1(0+1)*
也将匹配01
所以我相信它不起作用。
在这种组的左右任何一种情况下,都可以存在相等数量的0
s,其间可以存在任意数量的1
s: (1*01*01*)*
。
在大多数正则表达式实现中,上述正则表达式将写为
^(1*01*01*)*(11*|011*0)(1*01*01*)*$
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.