re = /\b(?:field[1234])=\S+\b(?=.*\btype=a\b)
|
(?<=\btype=a\b.*)\b(?:field[1234])=\S+\b/mx
str = 'field1=foo this=garbage field2=bar type=a field3=now
field1=foo field2=bar type=b field3=now
field1=bar type=a field3=foo this=garbage field4=hithere
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html