Ruby 中的单词 space 单词正则表达式?

word space word regex in Ruby?

我正在尝试根据正则表达式拆分 Ruby 中的字符串。

字符串具有以下模式:

00 0 0 00 00 0

我希望能够每秒拆分字符串 space 但我对 Ruby 还很陌生,而且我对正则表达式的经验有限。

我试过以下方法:

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

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

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

谁能解释一下我如何在正则表达式中最好地做到这一点?如果可能的话,解释为什么我的尝试不起作用以及为什么你的工作示例有效,我想通过解决这个问题来增加我对正则表达式的了解。

使用String#scan

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

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

当使用正则表达式拆分给定的字符串时,匹配的部分将从结果集中删除。因此,您不能使用 RegEx 语法拆分这些数字并同时保留这些值。

请改用以下代码:

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