[英]Extract every substring from string on regex match?
我想提取兩個1之間的所有0,並從一個二進制數將它們分組。 到目前為止,我已經做到了
529.to_s(2).scan(/1(0+)1/)
輸出是只有一個元素的數組,盡管我要兩個元素。 那是
529 => binary => 1000010001
["0000","000"]
529.to_s(2).scan(/(?<=1)0+(?=1)/)
# => ["0000", "000"]
這怎么樣 ?
a = 529.to_s(2).split("1")
a.delete("")
a # => ["0000", "000"]
兩個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 。 它不包含任何一個,而您得到nil。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.