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を一致させる必要があります
負の先読み^(?!.*dog).*$
を使用するだけです。
説明
^
:行頭に一致(?!.*dog)
:ネガティブな先読み、Worddogが存在しないかどうかを確認します.*
:すべてに一致します(この場合は改行を除く)$
:行末に一致使用するだけ
string !~ /dog/
必要な文字列を選択します。
Selectを使用して、これを行うための信じられないほど簡単な方法が実際にあります。
array_of_urls.select { |url| !url.match(/dog/) }
これにより、Word'dog 'がどこにも含まれていないURLの配列が返されます。
使用できるもう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'] }