रेगेक्स दो शब्दों में से एक से मेल खाता है


301

मेरे पास एक इनपुट है जिसमें केवल 2 मान हो सकते हैं appleया banana। मैं यह सुनिश्चित करने के लिए कि दोनों में से कौन सा शब्द प्रस्तुत किया गया है, क्या नियमित अभिव्यक्ति का उपयोग कर सकता हूं?


2
इस रेगेक्स को किस भाषा / परिवेश में लागू किया जा रहा है? रेगेक्स कई स्थितियों में अनावश्यक ओवरहेड की तरह लगता है।
मिकमैकुसा

जवाबों:


467

इससे चल जाएगा:

/^(apple|banana)$/

करने के लिए बाहर निकालने के कब्जा कर लिया तार (जैसे से $1, $2):

(?:apple|banana)

43
कुछ के लिए, इसे गैर-कैप्चरिंग समूह के रूप में उपयोग करना उपयोगी होगा। उपयोग करना (?:apple|banna)या तो मेल खाएगा, लेकिन उन्हें कैप्चर किए गए स्ट्रिंग्स (जैसे $1, $2.. $N) की सूची में नहीं जोड़ेगा ।
15:

हाय क्विक क्वेश्चन, अगर मुझे सेबबनाना मैच नहीं करना है तो मुझे क्या करना चाहिए?
ग्रोवर रेयेस

रेगेक्स ऊपर सेब और केले से मेल खाता है, लेकिन सेबबाना से मेल नहीं खाता।
फ्लोग्रैटोस

99

अलग-अलग रेगेक्स इंजन हैं, लेकिन मुझे लगता है कि उनमें से अधिकांश इसके साथ काम करेंगे:

apple|banana

55
यदि आप अपने रेगेक्स में अधिक डालने की योजना बनाते हैं, तो आपको अपने शब्दों के चारों ओर कोष्ठक लगाने की आवश्यकता होगी, जैसे (apple|banana):।
ब्रायन जे

लेकिन इसे असंवेदनशील कैसे बनाया जाए?
नीतीश

वह re.IGNORECASEझंडे के साथ सेट है । उदा:re.compile("(apple|banana)", re.IGNORECASE)
ट्रोल्स यंडाल

-8

/.txt|.tif/दो अलग-अलग प्रकार की फाइलें- .txt या .tif में समाप्त होने वाली फाइलों को खोजते समय डायरेक्ट्री मॉनिटर के लिए 'फाइल नेम मैच' का पता लगाने के लिए साइटस्कोप पर नियमित अभिव्यक्ति का उपयोग किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.