我用红宝石工作的match
方法,我想匹配不包含某些字符串使用正则表达式的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
我想匹配不包含这个词的URL dog
,所以第1和第2者亦宜
我用红宝石工作的match
方法,我想匹配不包含某些字符串使用正则表达式的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
我想匹配不包含这个词的URL dog
,所以第1和第2者亦宜
只需使用负前瞻^(?!.*dog).*$
。
说明
^
:行的比赛开始 (?!.*dog)
:负前瞻,检查单词的狗不存在 .*
:匹配(在这种情况下,除了新行)一切 $
:匹配行尾 在线演示
只要使用
string !~ /dog/
选择您需要的字符串。
实际上,有一个非常简单的方法来做到这一点,使用选择。
array_of_urls.select { |url| !url.match(/dog/) }
这将返回的URL不包含在它的任何地方单词“狗”的数组。
你可以用另一件事是:
!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'] }