我想使用正则表达式从这样的字符串中生成一组结果:
results|foofoofoo\nresults|barbarbarbar\nresults|googoogoo\ntimestamps||friday
这是我的正则表达式。它适用于 Sublime Text 的正则表达式搜索,但不适用于 Ruby:
(results)\|.*?\\n(?=((results\|)|(timestamps\|\|)))
这将是期望的结果:
1. results|foofoofoo
2. results|barbarbar
3. results|googoogoo
相反,我得到了这些奇怪的回报,我无法理解。为什么这不选择结果行?
Match 1
1. results
2. results|
3. results|
4.
Match 2
1. results
2. results|
3. results|
4.
Match 3
1. results
2. timestamps||
3.
4. timestamps||
这是使用正则表达式的实际代码:
#create new lines for each regex'd line body with that body set as the raw attribute
host_scan.raw.scan(/(?:results)\|.*?\\n(?=((?:results\|)|(?:timestamps\|\|)))/).each do |body|
@lines << Line.new({:raw => body})
end