Ghilas BELHADJ Ghilas BELHADJ - 5 months ago 15
Ruby Question

Match string that doesn't contain a specific word

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

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