全局正则表达式与backrefs匹配

时间:2015-12-13 13:52:46

标签: ruby regex

我正在尝试构建一个匹配字符串中所有连续相同数字的正则表达式。例如,给定字符串'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功能是否存在根本性的错误?

0 个答案:

没有答案