在正则表达式匹配中从字符串中提取每个子字符串?

时间:2013-09-08 11:53:07

标签: ruby regex

我想从两个1之间提取所有0并将它们从二进制数中分组。到目前为止,我已经做到了,

529.to_s(2).scan(/1(0+)1/)

输出是只有一个元素的数组,虽然我想要两个元素。那是

529 => binary => 1000010001

["0000","000"]

3 个答案:

答案 0 :(得分:2)

529.to_s(2).scan(/(?<=1)0+(?=1)/)
# => ["0000", "000"]

答案 1 :(得分:0)

这是怎么回事?

a = 529.to_s(2).split("1")
a.delete("")
a # => ["0000", "000"]

答案 2 :(得分:0)

  

两个1和组之间的所有0

所以我认为你不想要10,100,111000,1000等比赛。最简单的方法是从开始和结束中找到第一个的左右索引,然后开始仅查找零。

这是一种方式。

bin=8.to_s(2) #=> 1000
bin[bin.index('1')..bin.rindex('1')].scan /0+/
#=> []

bin=529.to_s(2) #=> 1000
bin[bin.index('1')..bin.rindex('1')].scan /0+/
#=> ["0000", "000"]

小心 0 。它不包含任何一个,你就没有了。