अल्टरनेशन और उनके अनुप्रयोग
वास्तविक दुनिया के अनुप्रयोगों में, हम अक्सर ऐसे रेगुलर एक्सप्रेशन का उपयोग करते हैं जो दो या अधिक विकल्पों में से किसी एक से मैच करते हैं। साथ ही, हम कभी-कभी कई एक्सप्रेशन पर क्वांटिफायर लागू करना चाहते हैं। ऐसे सभी लक्ष्यों को पैरेंथेसिस के साथ ग्रुपिंग करके और वर्टिकल बार (|) के साथ अल्टरनेशन का उपयोग करके प्राप्त किया जाता है।
वर्टिकल बार (|) का उपयोग
अल्टरनेशन तब उपयोगी होता है जब हमें कई अलग-अलग विकल्पों में से किसी एक से मैच करने की आवश्यकता होती है। उदाहरण के लिए, रेगेक्स airways|airplane|bomber किसी भी टेक्स्ट से मैच करेगा जिसमें airways या airplane या bomber हो। वही उद्देश्य air(ways|plane)|bomber रेगेक्स का उपयोग करके प्राप्त किया जा सकता है।
यदि हम रेगेक्स (airways|airplane|bomber) का उपयोग करते हैं, तो यह तीनों एक्सप्रेशन में से किसी एक से मैच करेगा। रेगेक्स (air(ways|plane)|bomber) पर विचार करें, जिसमें दो कैप्चर होंगे यदि पहला एक्सप्रेशन मैच करता है (airways या airplane पहला कैप्चर और ways या plane दूसरा कैप्चर के रूप में), और एक कैप्चर यदि दूसरा एक्सप्रेशन मैच करता है (bomber)। हम ओपनिंग पैरेंथेसिस के बाद ?: लगाकर कैप्चरिंग प्रभाव को बंद कर सकते हैं:
(air(?:ways|plane)|bomber)
यह केवल एक कैप्चर करेगा यदि यह मैच करता है (airways या airplane या bomber)।
उदाहरण
निम्नलिखित कोड उपरोक्त चर्चा किए गए बिंदुओं को दर्शाता है:
import re s = 'airways aircraft airplane bomber' result = re.findall(r'(airways|airplane|bomber)', s) print(result) result2 = re.findall(r'(air(ways|plane)|bomber)', s) print(result2) result3 = re.findall(r'(air(?:ways|plane)|bomber)', s) print(result3)
आउटपुट
यह आउटपुट देता है:
['airways', 'airplane', 'bomber']
[('airways', 'ways'), ('airplane', 'plane'), ('bomber', '')]
['airways', 'airplane', 'bomber']