Reputation: 14106
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
Upvotes: 27
Views: 23446
Reputation: 9443
Another thing you can use is:
!url['dog']
With your example:
array = []
array << 'http://website1.com/url_with_some_words.html'
array << 'http://website2.com/url_with_some_other_words.html'
array << 'http://website3.com/url_with_the_word_dog.html'
array.select { |url| !url['dog'] }
You could also reject the urls that do contain 'dog'
:
array.reject { |url| url['dog'] }
Upvotes: 0
Reputation: 2200
There's actually an incredibly simple way to do this, using select.
array_of_urls.select { |url| !url.match(/dog/) }
this will return an array of the url's that don't contain the word 'dog' anywhere in it.
Upvotes: 3
Reputation: 14931
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 lineUpvotes: 55