我正在尝试构建一个匹配字符串中所有连续相同数字的正则表达式。例如,给定字符串'111221'
我希望匹配['111', '22', '1']
。
我当前的正则表达式是/(\d)\1*/
,它可以与String#match
一起使用,但当然只返回字符串中的第一个匹配项。
'111221'.match /(\d)\1*/ #=> #<MatchData "111" 1:"1">
Ruby global match regexp?中用于获取全局匹配的方法是使用String#scan
,但其行为不是我所期望的,可能是因为捕获组:
'111221'.scan /(\d)\1*/ #=> [["1"], ["2"], ["1"]]
而在其他语言中,例如Javascript,它可以正常工作:
'111221'.match(/(\d)\1*/g) //=> [ "111", "22", "1" ]
我的正则表达式或某些我缺少的Ruby功能是否存在根本性的错误?