不包含特定单词匹配字符串(Match string that doesn't contain

2019-06-26 13:28发布

我用红宝石工作的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者亦宜

Answer 1:

只需使用负前瞻^(?!.*dog).*$

说明

  • ^ :行的比赛开始
  • (?!.*dog) :负前瞻,检查单词的狗不存在
  • .* :匹配(在这种情况下,除了新行)一切
  • $ :匹配行尾

在线演示



Answer 2:

只要使用

string !~ /dog/

选择您需要的字符串。



Answer 3:

实际上,有一个非常简单的方法来做到这一点,使用选择。

array_of_urls.select { |url| !url.match(/dog/) }

这将返回的URL不包含在它的任何地方单词“狗”的数组。



Answer 4:

你可以用另一件事是:

!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'] }


文章来源: Match string that doesn't contain a specific word
标签: ruby regex match