Ruby正则表达式找到二进制间隙

use*_*793 2 ruby regex

我想找到使用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