ruby通过重复字符或空格来拆分字符串

ruby通过重复字符或空格来拆分字符串,ruby,regex,Ruby,Regex,我该如何分割这根线 "6885558 8866887777" => ["6", "88", "555", "8", "88", "66", "88", "7777"] 我试过了,但没用 ruby-1.8.7-p334 :020 > "111133".split(/(\d)\1+/) => ["", "1", "", "3"] split将只使用与之匹配的任何内容作为分隔符,并将其从相关字符串中删除。您需要的是: 慢慢来,\d匹配任何数字。它位于第二个捕获组中,因此\2

我该如何分割这根线

"6885558 8866887777" => ["6", "88", "555", "8", "88", "66", "88", "7777"] 
我试过了,但没用

ruby-1.8.7-p334 :020 > "111133".split(/(\d)\1+/)
 => ["", "1", "", "3"] 

split
将只使用与之匹配的任何内容作为分隔符,并将其从相关字符串中删除。您需要的是:

慢慢来,
\d
匹配任何数字。它位于第二个捕获组中,因此
\2*
将匹配同一数字的任何进一步出现。这将生成一个如下所示的数组

[["6", "6"], ["88", "8"], ["555", "5"], ["8", "8"],
 ["88", "8"], ["66", "6"], ["88", "8"], ["7777", "7"]]
因为我们只需要这些子数组中的第一项,所以我们可以使用
map(&:first)
收集它们


(请注意,
str.scan(/(\d)\1*/)
只会从第一个捕获组中生成一个数组,这意味着我们只能从可能重复的数字序列中获得一个数字。)

我认为
拆分
方法不起作用,因为这些方法会删除与
拆分
匹配的字符。我认为您可能需要迭代字符串。
[["6", "6"], ["88", "8"], ["555", "5"], ["8", "8"],
 ["88", "8"], ["66", "6"], ["88", "8"], ["7777", "7"]]