使用Ruby正则表达式拆分字符串

时间:2013-08-03 15:26:25

标签: ruby regex

我们有一个CSV文件。一个特定的列要包含许多条目,并且这些条目将使用换行符"\n"分隔,但这种情况并未发生。受影响列的样本数据如下。

30 units - R135                 50 units - R225                  80 units - R360

有没有方法将其拆分为三列?列数不固定。我想我们将不得不使用许多空格字符(超过两个)到split个条目。我需要:

data = "that long string"
# Some operation
result = ["30 units - R135", "50 units - R225", "80 units - R360"]

我试过这样的事情。但它没有用。结果是相同的字符串。

a.split('/(\s){3,}/')

可以采取什么方法来分割数据?

2 个答案:

答案 0 :(得分:3)

这样的陈述
a.split('/(\s){3,}/')

会在{em>字符串 a出现时将字符串拆分为/(\s){3,}/,这在目标字符串中无处不在,所以它仍然是不合法的。

您需要通过编写

来指定正则表达式
data = '30 units - R135                 50 units - R225                  80 units - R360'

result = data.split /\s{3,}/

p result

<强>输出

["30 units - R135", "50 units - R225", "80 units - R360"]

答案 1 :(得分:2)

正确的正则表达式是:

a.split(/\s{3,}/)

试用正则表达式的好地方: http://rubular.com/(你可能不需要它,但我太喜欢它了,所以分享:))