web-dev-qa-db-ja.com

特定の単語を含まない一致文字列

Ruby 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

Word dogを含まないURLに一致させるため、1番目と2番目のURLを一致させる必要があります

25
Ghilas BELHADJ

負の先読み^(?!.*dog).*$を使用するだけです。

説明

  • ^:行頭に一致
  • (?!.*dog):ネガティブな先読み、Worddogが存在しないかどうかを確認します
  • .*:すべてに一致します(この場合は改行を除く)
  • $:行末に一致

オンラインデモ

45
HamZa

使用するだけ

string !~ /dog/

必要な文字列を選択します。

9
Anton

Selectを使用して、これを行うための信じられないほど簡単な方法が実際にあります。

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

これにより、Word'dog 'がどこにも含まれていないURLの配列が返されます。

2
nfriend21

使用できるもう1つのものは次のとおりです。

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

do'dog'が含まれているURLを拒否することもできます。

array.reject { |url| url['dog'] }
0
Joe Kennedy