正则表达式(连续1和0)

时间:2013-11-20 03:14:45

标签: regex

嘿,我应该为没有连续0且没有连续1的二进制字符串开发正则表达式。然而,这个问题证明是非常棘手的。我不太确定如何按原样接近它。

如果有人能提供帮助,那就太棒了!这对我来说是新的。

1 个答案:

答案 0 :(得分:5)

你基本上是在寻找交替的数字,字符串:

...01010101010101...

但是在任何一个方向都没有无限的。

这是一个可选的0,后跟任意数量的10套,然后是可选的1

^0?(10)*1?$

(10)*(组)根据需要为您提供尽可能多的交替数字,可选的边缘字符允许您以半组开始/停止。

请记住,它也允许一个空字符串,这可能不是你想要的,尽管你可能会认为它仍然是一个没有连续相同数字的二进制字符串。如果你需要它的长度至少为1,你可以用更复杂的“或”正则表达式来完成:

^(0(10)*1?)|(1(01)*0?)$

使第一个数字(10)不可选,并根据这两个案例相应地调整以下序列。

但是如果允许的话,更简单的解决方案可能会更好 - 只需确保在进行正则表达式检查之前它的长度大于零。