इस लेख में
रेगुलर एक्सप्रेशन क्या हैं?
रेगुलर एक्सप्रेशन (regex) वर्णों के ऐसे अनुक्रम होते हैं जो सर्च पैटर्न को परिभाषित करते हैं। इनका उपयोग लगभग हर प्रोग्रामिंग भाषा और टेक्स्ट एडिटर में स्ट्रिंग्स को नियमों के आधार पर खोजने, मिलान करने और बदलने के लिए किया जाता है, न कि सटीक टेक्स्ट के आधार पर। एक ही रेगेक्स पैटर्न हज़ारों अलग-अलग स्ट्रिंग्स से मिलान कर सकता है जिनकी संरचना एक जैसी होती है।
रेगेक्स सिंटैक्स पहली नज़र में जटिल लग सकता है, लेकिन यह एक तार्किक व्याकरण का पालन करता है: शाब्दिक वर्ण स्वयं से मिलान करते हैं, जबकि . (कोई भी वर्ण), * (शून्य या अधिक) और [] (कैरेक्टर क्लास) जैसे विशेष मेटावर्ण लचीले मिलान नियम परिभाषित करते हैं। रेगेक्स पैटर्न पढ़ना सीखने से ऐसी शक्तिशाली टेक्स्ट प्रोसेसिंग क्षमताएं खुलती हैं जिनके लिए अन्यथा कोड की दर्जनों पंक्तियां लिखनी पड़तीं।
रेगेक्स पैटर्न कैसे काम करते हैं
एक रेगेक्स इंजन आपके पैटर्न को इनपुट टेक्स्ट के विरुद्ध वर्ण दर वर्ण प्रोसेस करता है, संभावित मिलानों पर नज़र रखता है और किसी रास्ते के विफल होने पर पीछे लौटता (बैकट्रैक) है। कुछ मूल घटकों को समझ लेने से कोई भी पैटर्न पढ़ा जा सकता है।
- कैरेक्टर क्लास और क्वांटिफ़ायर -- [a-z] किसी भी छोटे अक्षर से, \d किसी भी अंक से मिलान करता है, + का अर्थ एक या अधिक है, और {2,4} 2 से 4 पुनरावृत्तियों के बीच मिलान करता है
- ग्रुप और वैकल्पन (alternation) -- कोष्ठक () सबमैच निकालने के लिए कैप्चर ग्रुप बनाते हैं, जबकि पाइप | ऑपरेटर विकल्पों के बीच OR तर्क प्रदान करता है
- एंकर और लुकअहेड -- ^ और $ मिलान को किसी पंक्ति के आरंभ और अंत से बांधते हैं, जबकि लुकअहेड (?=...) और लुकबिहाइंड (?<=...) वर्णों का उपभोग किए बिना शर्तों की पुष्टि करते हैं
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
किसी रेगेक्स पैटर्न को समझें →रेगेक्स का उपयोग कब करें
सॉफ़्टवेयर विकास में पैटर्न-आधारित टेक्स्ट प्रोसेसिंग के लिए रेगुलर एक्सप्रेशन मानक उपकरण हैं।
- फ़ॉर्म सत्यापन -- कस्टम पार्सिंग तर्क लिखे बिना यह सत्यापित करें कि उपयोगकर्ता का इनपुट ईमेल पते, फ़ोन नंबर या पिन कोड जैसे अपेक्षित प्रारूपों से मेल खाता है
- लॉग पार्सिंग -- असंरचित टेक्स्ट डेटा को संरचित करने के लिए कैप्चर ग्रुप का उपयोग करते हुए सर्वर लॉग से टाइमस्टैम्प, एरर कोड और IP पते निकालें
- खोजें और बदलें -- कोड एडिटर या बिल्ड स्क्रिप्ट में थोक टेक्स्ट रूपांतरण करें, जैसे पूरे कोडबेस में वेरिएबल का नाम बदलना या तारीख की स्ट्रिंग्स को पुनः प्रारूपित करना
अक्सर पूछे जाने वाले प्रश्न
रेगेक्स और ग्लोब पैटर्न में क्या अंतर है?
ग्लोब पैटर्न (जैसे *.txt) सरल वाइल्डकार्ड पैटर्न होते हैं जिनका उपयोग मुख्यतः शेल में फ़ाइल नाम मिलान के लिए होता है। रेगेक्स कहीं अधिक अभिव्यक्तिशील है: यह वैकल्पन, क्वांटिफ़ायर, लुकअहेड, बैकरेफ़रेंस और कैरेक्टर क्लास का समर्थन करता है। फ़ाइल पथों के लिए ग्लोब का और टेक्स्ट सामग्री मिलान के लिए रेगेक्स का उपयोग करें।
ग्रीडी और लेज़ी मिलान में क्या अंतर है?
ग्रीडी क्वांटिफ़ायर (*, +, {n,m}) यथासंभव अधिक टेक्स्ट से मिलान करते हैं, जबकि लेज़ी क्वांटिफ़ायर (*?, +?, {n,m}?) यथासंभव कम से मिलान करते हैं। उदाहरण के लिए, इनपुट <b>bold</b> के लिए ग्रीडी पैटर्न <.*> पूरी स्ट्रिंग से मिलान करता है, जबकि <.*?> केवल <b> से मिलान करता है। जब आपको सबसे छोटा संभव मिलान चाहिए, तब लेज़ी क्वांटिफ़ायर का उपयोग करें।
क्या रेगेक्स प्रदर्शन संबंधी समस्याएं पैदा कर सकता है?
हां। नेस्टेड क्वांटिफ़ायर वाले कुछ पैटर्न विनाशकारी बैकट्रैकिंग का कारण बन सकते हैं, जहां इंजन घातांकीय संख्या में रास्तों की खोज करता है। a की लंबी स्ट्रिंग पर (a+)+ जैसे पैटर्न आपके प्रोग्राम को फ़्रीज़ कर सकते हैं। ओवरलैपिंग कैरेक्टर सेट पर नेस्टेड क्वांटिफ़ायर से बचें, उपलब्ध होने पर एटॉमिक ग्रुप या पज़ेसिव क्वांटिफ़ायर का उपयोग करें, और सबसे खराब स्थिति वाले इनपुट के विरुद्ध पैटर्न का परीक्षण करें।