re = /^(?!(?:.+?%20){3}+.)(?:.+?%20){2}.+?(?:%20)?$/m
str = 'https://domain.com/search=any%20url%20encoded_word-here
https://domain.com/search=any%20url%20encoded_word-here%20
https://domain.com/search=z%C5%82oty%20z%C5%82oty%20z%C5%82oty
https://domain.com/search=z%C5%82oty%20z%C5%82ota%20%C5%82ata
https://domain.com/search=any%20%20word%20%20here
https://domain.com/search=any%20word%20here&color=blue
https://domain.com/search=any-1st%20word_2nd%20here3
https://example.com/search=one%20two
https://domain.com/search=one%20two%20three%20four
https://domain.com/search=one%20%20two%20%20three%20%20four
https://domain.com/search=one%20%20two%20three%20%20four
https://domain.com/search=one%20%20two%20%20three%20%20four
https://domain.com/search=one%20two%20three%20four&color=blue
https://domain.com/search=z%C5%82oty%20z%C5%82oty%20z%C5%82oty%20word
'
# 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