嘿,我应该为没有连续0且没有连续1的二进制字符串开发正则表达式。然而,这个问题证明是非常棘手的。我不太确定如何按原样接近它。
如果有人能提供帮助,那就太棒了!这对我来说是新的。
答案 0 :(得分:5)
你基本上是在寻找交替的数字,字符串:
...01010101010101...
但是在任何一个方向都没有无限的。
这是一个可选的0
,后跟任意数量的10
套,然后是可选的1
:
^0?(10)*1?$
(10)*
(组)根据需要为您提供尽可能多的交替数字,可选的边缘字符允许您以半组开始/停止。
请记住,它也允许一个空字符串,这可能不是你想要的,尽管你可能会认为它仍然是一个没有连续相同数字的二进制字符串。如果你需要它的长度至少为1,你可以用更复杂的“或”正则表达式来完成:
^(0(10)*1?)|(1(01)*0?)$
使第一个数字(1
或0
)不可选,并根据这两个案例相应地调整以下序列。
但是如果允许的话,更简单的解决方案可能会更好 - 只需确保在进行正则表达式检查之前它的长度大于零。