我想在一个冒号之后分割一行,该冒号跟在一行开头的数字之后:
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+:)/)
将以逗号分隔,后跟数字后跟冒号。
答案 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):