我有一串表格
s = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"
我想使用正则表达式提取值(value1、value2 等)。可以有任意数量的值/前缀对。只有两个前缀。这些值可能有空格。
我试过像
/((prefix1|prefix2)(.*))+/
这不起作用,因为第一个 .* 匹配匹配字符串的其余部分。
我正在研究红宝石。
提前致谢。
在我看来,您想使用拆分功能:
tokens = s.split(/\s+/)
这将为您提供一个由空格分隔的标记列表。
查看ruby 食谱中的这一部分。
更新:如果您绝对必须使用单个正则表达式匹配它们,这应该适合您:
/((\w+)\s+(.*?))+/
尝试/((prefix1|prefix2)(.*?))+/
问号使它不贪婪。
他的预期结果是什么?如果您只是想提取没有前缀的值,请尝试以下操作:
str = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"
p str.split.reject { |s| s =~ /prefix/ }
#=> ["something", "value1", "value2", "value3", "value4"]
String#split
可以在正则表达式上拆分:
s = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"
p s.split(/ prefix1 | prefix2 /) # ["something", "value1", "value2", "value3", "value4"]