我正在使用match
方法处理ruby,我希望将不包含某个字符串的URL与正则表达式匹配:
例如:
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
我想匹配不包含单词dog
的网址,因此第一个和第二个网址应匹配
答案 0 :(得分:42)
只需使用否定前瞻^(?!.*dog).*$
。
<强>解释强>
^
:匹配行的开头(?!.*dog)
:负向前瞻,检查单词dog是否不存在.*
:匹配所有内容(本例中除了换行符)$
:匹配行尾答案 1 :(得分:9)
只需使用
string !~ /dog/
选择您需要的字符串。
答案 2 :(得分:2)
使用select实际上有一种非常简单的方法。
array_of_urls.select { |url| !url.match(/dog/) }
这将返回一个不包含“dog”字样的url数组。
答案 3 :(得分:0)
您可以使用的另一件事是:
!url['dog']
用你的例子:
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'] }
你也可以拒绝做包含'dog'
的网址:
array.reject { |url| url['dog'] }