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