0

我有一串表格

s = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"

我想使用正则表达式提取值(value1、value2 等)。可以有任意数量的值/前缀对。只有两个前缀。这些值可能有空格。

我试过像

/((prefix1|prefix2)(.*))+/

这不起作用,因为第一个 .* 匹配匹配字符串的其余部分。

我正在研究红宝石。

提前致谢。

4

4 回答 4

1

在我看来,您想使用拆分功能:

tokens = s.split(/\s+/)

这将为您提供一个由空格分隔的标记列表。

查看ruby​​ 食谱中的这一部分。

更新:如果您绝对必须使用单个正则表达式匹配它们,这应该适合您:

/((\w+)\s+(.*?))+/
于 2012-10-06T07:34:03.993 回答
0

尝试/((prefix1|prefix2)(.*?))+/

问号使它不贪婪。

于 2012-10-06T07:33:18.157 回答
0

他的预期结果是什么?如果您只是想提取没有前缀的值,请尝试以下操作:

str = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"

p str.split.reject { |s| s =~ /prefix/ }

#=> ["something", "value1", "value2", "value3", "value4"]
于 2012-10-06T09:05:45.040 回答
0

String#split可以在正则表达式上拆分:

s = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"
p s.split(/ prefix1 | prefix2 /) # ["something", "value1", "value2", "value3", "value4"]
于 2012-10-06T11:05:23.183 回答