2011-06-22 22 views

उत्तर

13

आप एक तरह कुछ करते हैं और सकारात्मक नज़र Aheads

का उपयोग कर सकते हैं
(?=.*cat)(?=.*dog).* 

देखें कि यह here on Rubularअपडेट किया गया लिंक!

यह सकारात्मक लुकहेड (?=.*cat) स्ट्रिंग के भीतर कहीं "बिल्ली" है या नहीं, तो (?=.*dog) का उपयोग करके "कुत्ते" के लिए भी किया जाता है। यदि वे दोनों दावे सत्य हैं तो पूर्ण स्ट्रिंग को अंत में .* से मिलान किया जाता है।

लाभ यह है कि यह भी

कुत्ते और बिल्ली की भरपाई कर देंगे

और न केवल

बिल्ली और कुत्ते

लेकिन यह भी से मेल खाएगी है

कुत्तों और बिल्लियों

यदि आप सटीक मिलान चाहते हैं, तो का उपयोग इस

(?=.*\bcat\b)(?=.*\bdog\b).* 

\b एक शब्द सीमा है, यानी यह एक शब्द और एक गैर शब्द चरित्र के बीच से मेल खाता है।

देखें कि यह here

0

और एक regexp में डिफ़ॉल्ट क्रिया है, यानी पहले मैच इस फिर उस के बाद और इतने पर है।

बिल्ली और कुत्ते के मैच के लिए, की तरह

cat.*dog 

जिसका अर्थ है, मैच "बिल्ली" कुछ भी द्वारा पीछा किया और फिर "कुत्ता" के बाद कुछ का उपयोग करें। लेकिन फिर मैंने आपके प्रश्न को गलत समझा होगा ...

0

यह आपके इच्छित चीजों पर निर्भर करता है।

आप वाइल्ड कार्ड

cat.+dog 

या

cat.+dog|dog.+cat 

या

cat +and +dog 
2

आपका प्रश्न बहुत स्पष्ट नहीं है का उपयोग कर सकते हैं।

आप (शायद एक शब्द के कुछ हिस्से) केवल उन्हीं श्रृंखलाएं जिनमें दोनों "बिल्ली" और "कुत्ता" शामिल मिलान करना चाहते हैं, तो आप कर सकता है:

/^.*(cat.*dog|dog.*cat).*$/ 

ऊपर regex होगा "concatenation dogma" मैच, लेकिन "concatenation" नहीं।

आप यह सुनिश्चित करना है कि "बिल्ली" और "कुत्ता" खुद से शब्दों के रूप में दिखाई देते हैं चाहते हैं, करते हैं:

/^.*(\bcat\b.*\bdog\b|\bdog\b.*\bcat\b).*$/ 

ऊपर रेगुलर एक्सप्रेशन से मेल होगा "बिल्ली और कुत्ते", लेकिन "संयोजन हठधर्मिता" या "बिल्ली dogma"।

स्रोत: http://ruby-doc.org/docs/ProgrammingRuby/html/intro.html#S5

0

Regexp रों में कोई and ऑपरेटर नहीं है, क्योंकि यह मतलब नहीं है। यह होगा कभी नहीं मैच: कैसे एक String दोनों 'cat'और'dog' एक ही समय में हो सकता है?

+1

'schrodinger.pet.species.to_s' –

+0

बेशक एक स्ट्रिंग एक ही समय में" बिल्ली "और" कुत्ता "दोनों हो सकती है -" एक बिल्ली और कुत्ता एक ही स्ट्रिंग में हैं "। – jeffdill2

संबंधित मुद्दे