re = /(?:(da|en-gb|en|\*))(?!.*\1(?!-))(?:;q=(?:1|0(\.\d+)?))?(?:,(da|en-gb|en|\*)(?!.*\3(?!-))(?:;q=(?:1|0(?:\.\d+)?))?)*/
str = 'enenen-gben
enenenen-gb
Accept-Language: da, en-gb;q=0.8, en;q=0.7
en;q=0,da;q=0.4,*;q=0.4,da;q=0.4'
# 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