2012-07-25 21 views
22

मैं match विधि के साथ गहरे लाल रंग का साथ काम कर रहा हूँ शामिल नहीं है और मैं एक यूआरएल है कि एक नियमित रूप से अभिव्यक्ति के साथ एक निश्चित स्ट्रिंग शामिल नहीं करता मिलान करना चाहते हैं: पूर्व:मैच स्ट्रिंग है जो किसी विशिष्ट शब्द

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 शामिल नहीं करता मिलान करना चाहते हैं, तो 1 और 2 लोगों

+0

यह सवाल [यहां] पोस्ट करने का सबसे अच्छा जवाब दिया गया है (http://stackoverflow.com/questions/406230/नियमित-अभिव्यक्ति-से-मिलान-स्ट्रिंग-युक्त-एक-शब्द) समान प्रश्नों के लिए SO खोजना एक अच्छा विचार है। –

उत्तर

34

बस एक नकारात्मक लुकहेड ^(?!.*dog).*$ का उपयोग करें।

स्पष्टीकरण

  • ^: पंक्ति का
  • (?!.*dog) शुरू से मेल खाते हैं: नकारात्मक अग्रदर्शी, देखें कि क्या शब्द कुत्ता
  • .* मौजूद नहीं है: (इस मामले में नई-पंक्तियों को छोड़कर) सब कुछ से मेल खाते हैं
  • $: लाइन
का मिलान अंत

Online demo

+0

वाह, जानकारी का यह टुकड़ा आश्चर्यजनक रूप से खोजने में मुश्किल था। –

7

मिलान किया जाना चाहिए बस का उपयोग

string !~ /dog/ 

आपको आवश्यक तारों का चयन करने के लिए।

2

चुनने का उपयोग करके वास्तव में ऐसा करने का एक अविश्वसनीय तरीका है।

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

यह यूआरएल की एक सरणी लौटाएगा जिसमें उसमें कहीं भी 'कुत्ता' शब्द नहीं है।

+1

अधिक संक्षेप में, 'array_of_urls.reject {| url | url.match (/ dog /)} ' – nicholaides

+0

" अविश्वसनीय रूप से सरल " – ahnbizcad

0

एक और बात आप उपयोग कर सकते है:

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' होते हैं:

!url['dog'] 
अपने उदाहरण के साथ

array.reject { |url| url['dog'] } 
संबंधित मुद्दे