Ruby中的单词空间单词正则表达式?

时间:2015-01-05 19:37:47

标签: ruby regex

我正在尝试基于正则表达式在Ruby中拆分String。

String具有以下模式:

00 0 0 00 00 0

我希望能够在每一秒空间拆分字符串,但我对Ruby很新,而且我对Regexes的经验有限。

我尝试了以下内容:

line.split(/[0-9._%+-]+\s+[0-9._%+-]+/)

但这只返回一个空值的数组。我已经尝试了正则表达式模式的各种不同组合,但没有接近我想要的。结果应该是这样的数组:

Array[0] => '00 0'
Array[1] => '0 00'
Array[2] => '00 0'

有人能解释我怎样才能在正则表达式中做到最好吗?如果可能的话解释为什么我的尝试不起作用以及为什么你的工作实例工作,我想通过解决这个问题来增加我对正则表达式的了解。

2 个答案:

答案 0 :(得分:2)

使用String#scan

line = "00 0 0 00 00 0"
line.scan(/[0-9._%+-]+\s+[0-9._%+-]+/)
#=> ["00 0", "0 00", "00 0"]

当您使用String#split时,您会传递一个正则表达式,以匹配您在输出中 想要的内容。也就是说,应该在输出数组中的字符串之间。

答案 1 :(得分:1)

使用RegEx拆分给定字符串时,匹配的部分将从结果集中删除。因此,您无法使用RegEx语法来拆分这些数字并同时保留这些值。

请改用以下代码:

"00 0 0 00 00 0".scan(/[0-9]+\s[0-9]+/)