Ruby正则表达式可选重复组?

时间:2013-12-24 09:21:11

标签: ruby regex ruby-2.0

我正在尝试使用正则表达式从Ruby中的字符串中提取多个子字符串。

这是我的字符串:text.1.2.3.4.5

我想要的是与多个组匹配,如下所示:

text
.1
.2
.3
.4
.5

text可以是任何单词字符。其余的必须是\.\d*的组,但不能有。{1}}。所以这样的字符串:text应该只与一个捕获的结果text匹配。

这是我尝试的但它没有按预期工作。我只收到text和最后一组.5

^(\w*)(?:(\.\d+)|$)*

4 个答案:

答案 0 :(得分:3)

"text.1.2.3.4.5".scan(/\A\w+|\.\d*/)
# => ["text", ".1", ".2", ".3", ".4", ".5"]

答案 1 :(得分:0)

我不是正则英雄,但这是我的镜头:

(\w*)(\.\d+)?

看起来相当简单,但似乎也有诀窍(除了最后的额外空搭配) 查看http://rubular.com/r/xAqgUqERa7即可播放

答案 2 :(得分:0)

你的意思是?

> "text.1.2.3.4.5".scan(/([a-zA-Z]+|\.\d+)/)
=> [["text"], [".1"], [".2"], [".3"], [".4"], [".5"]]

答案 3 :(得分:0)

这似乎有效(\w*)(\.\d+)