簡體   English   中英

從正則表達式匹配的字符串中提取每個子字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM