क्या आपने कभी टेक्स्ट के एक टुकड़े में एक आवर्ती पैटर्न खोजने की कोशिश की है? आपने अपने ब्राउज़र या वर्ड प्रोसेसर में खोज फ़ंक्शन जैसी किसी चीज़ का उपयोग किया होगा, लेकिन जब आपको कुछ अधिक जटिल खोजने की आवश्यकता होती है, तो यह प्रोवर्बियल हेस्टैक में सुई ढूंढने जैसा हो सकता है।
सौभाग्य से, टेक्स्ट में कैरेक्टर स्तर तक सटीक पैटर्न चुनने का एक तरीका है। इसे रेगुलर एक्सप्रेशन (RegEx) कहा जाता है, और यह आपको टेक्स्ट के माध्यम से खोज करने का मास्टर बनने देता है।
मैं RegEx कहां उपयोग कर सकता हूं?
हालांकि Unix और लिनक्स ने उन्हें लोकप्रिय बनाया, रेगुलर एक्सप्रेशन Microsoft Word सहित विभिन्न पैकेजों में उपलब्ध हैं।
रेगुलर एक्सप्रेशन विशेष रूप से कई उल्लेखनीय लिनक्स प्रोग्राम में उपयोग किए जाते हैं, जिनमें grep, Awk और Sed शामिल हैं।
उदाहरण के लिए, आप अपने PC पर USB डिवाइस की जांच करना चाह सकते हैं। lspci का उपयोग करके, आप सभी डिवाइस की सूची देखेंगे, और आपको USB एंट्री को स्वयं ढूंढना होगा। आप इसके बजाय निम्न का उपयोग करके केवल USB डिवाइस दिखा सकते हैं:
lspci | grep "USB"
यह कार्रवाई में RegEx का सबसे सरल उदाहरण है। यह टर्मिनल में रेगुलर एक्सप्रेशन का उपयोग करने का सबसे लोकप्रिय तरीका है लेकिन एकमात्र नहीं। आज आप टेक्स्ट एडिटर्स से लेकर फाइल मैनेजर्स तक कई अलग-अलग प्रकार के सॉफ्टवेयर में RegEx सपोर्ट पा सकते हैं।
पैटर्न ढूंढना
आपने शायद टर्मिनल में फाइलों या फोल्डर्स का चयन करते समय वाइल्डकार्ड के रूप में कार्य करने वाले * कैरेक्टर का उपयोग किया है। उदाहरण के लिए, एक फोल्डर में सभी JPG फाइलों को सूचीबद्ध करने के लिए, आप उपयोग कर सकते हैं:
ls *.jpg
उपरोक्त का RegEx समतुल्य होगा:
ls | grep -E "\.jpg"
JPG और PNG दोनों फाइलों को खोजने के लिए, उपयोग करें:
ls | grep -E "(\.jpg|\.png)"
रेंज
यदि आप किसी पैटर्न के बजाय कैरेक्टर की एक विशिष्ट रेंज खोजना चाहते हैं, तो आप इसे ब्रैकेट में परिभाषित करके ऐसा कर सकते हैं। यदि, उदाहरण के लिए, आप अपने पैटर्न के रूप में [a-z] का उपयोग करते हैं, तो यह वर्णमाला के किसी भी लोअरकेस अक्षरों से युक्त किसी भी स्ट्रिंग से मेल खाएगा।
जैसा कि आपने अनुमान लगाया होगा, [A-Z] केवल अपरकेस अक्षरों का चयन करेगा। अपरकेस और लोअरकेस दोनों में अक्षरों की किसी भी रेंज को चुनने के लिए, अभिव्यक्ति [a-zA-Z] में बदल जाएगी।
अपने पैटर्न के विशिष्ट संख्या में उदाहरणों का पता लगाने के लिए, आप इसे कर्ली ब्रैकेट में बता सकते हैं। {5} आपके पैटर्न के पांच घटनाओं को वापस करेगा। आप संख्याओं की रेंज का भी उपयोग कर सकते हैं, इसलिए {5,10} आपको पांच से दस उदाहरण प्रस्तुत करेगा।
मेटाकैरेक्टर्स
रेगुलर एक्सप्रेशन में, आप दो कैरेक्टर्स के साथ स्ट्रिंग के कुछ हिस्सों को भी खोज सकते हैं जिन्हें मेटाकैरेक्टर्स कहा जाता है। वे शेल में आपके द्वारा उपयोग किए गए वाइल्डकार्ड मैच के समान हैं।
प्राथमिक एक साधारण डॉट है, जो किसी भी अन्य सिंगल कैरेक्टर के लिए खड़ा है। यदि आपने पैटर्न c.ll का उपयोग किया, तो यह "cell" से मेल खाएगा लेकिन "cull" और "call" से भी।
डॉट के बाद एक एस्टरिस्क दर्ज करके, आप इसका उपयोग अनंत संख्या में कैरेक्टर से मेल खाने के लिए कर सकते हैं। उदाहरण के लिए, .*board "keyboard" और "skateboard" दोनों के लिए एक मैच होगा। भले ही "key" और "skate" में अक्षरों की संख्या अलग हो।
एस्केप
आपने देखा होगा कि हमारे उदाहरण में, जहां हमने विभिन्न प्रकार की इमेज फाइलों का चयन किया, हमने पीरियड से पहले बैकस्लैश का उपयोग किया ("\.jpg")। यह RegEx में विशेष कैरेक्टर्स को एस्केप करने का तरीका है।
यदि हमने उनका उपयोग नहीं किया होता, तो हमारा पैटर्न केवल फाइलों के एक्सटेंशन से मेल नहीं खाता, जैसे ".jpg" और ".png" जैसे स्ट्रिंग्स, बल्कि "ajpg" और "opng" से भी मेल खाता। याद रखें, . एक वाइल्डकार्ड है जो किसी भी कैरेक्टर से मेल खाता है।
एंकर और बाउंड्रीज़
एंकर और बाउंड्री आपको अधिक सटीक रूप से परिभाषित करने की अनुमति देते हैं कि आप क्या खोज रहे हैं।
केवल व्यक्तिगत शब्द "computer" को ढूंढने के लिए, जिसमें पहले या बाद में कोई अन्य कैरेक्टर जुड़ा न हो, आपको पैटर्न को \<computer\> के रूप में परिभाषित करना चाहिए।
आप विशेष रूप से उन पैटर्न को भी खोज सकते हैं जो लाइन की शुरुआत या अंत में दिखाई देते हैं। यह ^ और $ कैरेक्टर्स के साथ क्रमशः प्राप्त किया जाता है।
तो, यदि आप केवल उन एंट्री को ढूंढना चाहते थे जहां शब्द "computer" लाइन की शुरुआत में दिखाई दिया, तो आपका पैटर्न ^computer जैसा दिखेगा। विपरीत के लिए, जब यह लाइन के अंत में होता है, तो पैटर्न computer$ में बदल जाएगा।
ये RegEx के सरल नियम हैं, जिन्हें आप उन सटीक पैटर्न को खोजने के लिए मिश्रित भी कर सकते हैं जिन्हें आप खोज रहे हैं। आप लाइन की शुरुआत में कैरेक्टर रेंज, या अंत में वैकल्पिक शब्द, विशिष्ट तिथियां, या वर्षों की एक रेंज, टेक्स्ट के एक सिंगल स्ट्रिंग का उपयोग करके खोज सकते हैं।
रेगुलर एक्सप्रेशन में मास्टर बनने के लिए हमारे रेगुलर एक्सप्रेशन चीटशीट को देखना न भूलें।