re = /(?<arg>(?<key>\w+)=(?<quote>['"`]?)(?<value>(?:(?!\k<quote>)[^\\])*(?:\\[\s\S](?:(?!\k<quote>)[^\\])*)*)\k<quote>)/
str = 'arg="value" arg=\'value\' arg=`value` arg="value \'value\'" arg=\'value \\\'value\\\' value\' arg="value \\"value\\" value" arg=`value \\`value\\ value`'
# 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