我想找到使用Ruby正则表达式1000001001010011100000000000的二进制间隙,从左边我想使用正则表达式匹配
A. 1000001应返回00000
B. 1001应该返回00
C. 101应该返回0
D 1001应返回00
我的第一次尝试看起来像这样,但它错过了B和D.
更新
正整数N内的二进制间隙是连续零的任何最大序列,其由N的二进制表示中的两端的1包围.
Cas*_*yte 11
我认为你在寻找的是:
/1(0+)(?=1)/
Run Code Online (Sandbox Code Playgroud)
您的模式的问题是您使用"结束1".结果,下一项研究在此"结束1"之后开始.但是如果你使用前瞻(即零宽度断言不消耗字符而只测试之后发生的事情),则不会消耗"结束1"并获得所需的结果,因为下一次研究是在最后的零.
请注意,如果您不需要在它们之间包含零,您还可以简单地使用: /0+/
其他方式:如果您确定该字符串仅包含1和0,您还可以使用\B此模式的(非)字边界断言:1\K0++\B