使用Ruby正则表达式分隔字符后跟数字

时间:2014-07-12 20:46:29

标签: ruby regex

我想在一个冒号之后分割一行,该冒号跟在一行开头的数字之后:

123:[1,2,3].inject(:+) should split to ["123", "[1,2,3].inject(:+)"]

这个正则表达式将起作用:

(?<=^\d|^\d\d|^\d\d\d):

但是,如果我的数字超过三位数,则会失败。

是否有预测在冒号前面有一个任意数字的数字,类似于后面的非捕捉外观?

例如:

"123:[1,2,3].inject(:+),456:+c2".split(/,(?=\d+:)/)

将以逗号分隔,后跟数字后跟冒号。

2 个答案:

答案 0 :(得分:1)

str = "123:[1,2,3].inject(:+)"
arr = str.split(':', 2)
p arr

--output:--
["123", "[1,2,3].inject(:+)"]

答案 1 :(得分:-1)

您可以在ruby 2.0中使用\K功能,从匹配结果中删除左侧匹配的部分:

\d+\K:

但是因为它只能用于一个数字,你可以简单地做到(你不需要检查之前是否有多个数字)

(?<=\d):