Match string that doesn't contain a specific word

Ghilas BELHADJ picture Ghilas BELHADJ · Jul 25, 2012 · Viewed 18.6k times · Source

I'm working with ruby with the match method and I want to match an URL that doesn't contain a certain string with a regular Expression: ex:

http://website1.com/url_with_some_words.html
http://website2.com/url_with_some_other_words.html
http://website3.com/url_with_the_word_dog.html

I want to match the URLs that doesn't contain the word dog, so the 1st and the 2nd ones should be matched

Answer

HamZa picture HamZa · Jul 22, 2013

Just use a negative lookahead ^(?!.*dog).*$.

Explanation

  • ^ : match begin of line
  • (?!.*dog) : negative lookahead, check if the word dog doesn't exist
  • .* : match everything (except newlines in this case)
  • $ : match end of line

Online demo