क्या आपने कभी पाठ के एक टुकड़े में आवर्ती पैटर्न खोजने की कोशिश की है? हो सकता है कि आपने अपने ब्राउज़र या वर्ड प्रोसेसर में खोज फ़ंक्शन जैसी किसी चीज़ का उपयोग किया हो, लेकिन जब आपको कुछ अधिक जटिल खोजने की आवश्यकता होती है, तो यह लौकिक घास के ढेर में सुई खोजने जैसा हो सकता है।
सौभाग्य से, चरित्र के ठीक नीचे पाठ में सटीक पैटर्न चुनने का एक तरीका है। इसे रेगुलर एक्सप्रेशन (RegEx) कहा जाता है, और यह आपको टेक्स्ट के माध्यम से खोज करने में महारत हासिल करने देता है।
मैं RegEx का उपयोग कहां कर सकता हूं?
हालांकि यूनिक्स और लिनक्स ने उन्हें लोकप्रिय बना दिया है, रेगुलर एक्सप्रेशन विभिन्न पैकेजों में उपलब्ध हैं, जिनमें माइक्रोसॉफ्ट वर्ड भी शामिल है।
कई उल्लेखनीय लिनक्स प्रोग्रामों में रेगुलर एक्सप्रेशन का विशेष रूप से उपयोग किया जाता है, जिसमें grep
. शामिल हैं , Awk
और Sed
।
उदाहरण के लिए, आप अपने पीसी पर यूएसबी उपकरणों की जांच कर सकते हैं। 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
, यह "सेल" से मेल खाएगा, लेकिन "कूल" और "कॉल" से भी मेल खाएगा।
एक बिंदु के बाद तारांकन दर्ज करके, आप इसका उपयोग अनंत वर्णों से मेल खाने के लिए कर सकते हैं। उदाहरण के लिए, .*board
"कीबोर्ड" और "स्केटबोर्ड" दोनों के लिए एक मैच होगा। भले ही "कुंजी" और "स्केट" में अक्षरों की संख्या भिन्न हो।
बचें
आपने देखा होगा कि हमारे उदाहरण में, जहां हमने विभिन्न प्रकार की छवि फ़ाइलों का चयन किया था, हमने अवधि ("\.jpg") से पहले बैकस्लैश का उपयोग किया था। इस तरह आप RegEx में विशेष वर्णों से बचते हैं।
यदि हम उनका उपयोग नहीं करते हैं, तो हमारा पैटर्न केवल फाइलों के एक्सटेंशन, ".jpg" और ".png" जैसे स्ट्रिंग्स से मेल नहीं खाएगा, बल्कि "ajpg" और "opng" से भी मेल खाएगा। याद रखें, .
एक वाइल्डकार्ड है जो किसी भी वर्ण से मेल खाता है।
एंकर और सीमाएं
एंकर और सीमाएं आपको अधिक सटीक रूप से परिभाषित करने की अनुमति देती हैं कि आप क्या चाहते हैं।
केवल अलग-अलग शब्द "कंप्यूटर" को खोजने के लिए, पहले या बाद में कोई अन्य वर्ण संलग्न नहीं है, आपको पैटर्न को \<computer\>
के रूप में परिभाषित करना चाहिए ।
आप विशेष रूप से उन पैटर्नों को भी खोज सकते हैं जो पंक्ति के आरंभ या अंत में दिखाई देते हैं। यह ^
. के साथ हासिल किया जाता है और $
वर्ण क्रमशः।
इसलिए, यदि आप केवल उन प्रविष्टियों को खोजना चाहते हैं जहां "कंप्यूटर" शब्द एक पंक्ति की शुरुआत में दिखाई देता है, तो आपका पैटर्न ^computer
जैसा दिखेगा। . इसके विपरीत, जब यह पंक्ति के अंत में होता है, तो पैटर्न computer$
. में बदल जाएगा ।
वे रेगेक्स के सरल नियम हैं, जिन्हें आप अपने इच्छित पैटर्न को ठीक से खोजने के लिए भी मिला सकते हैं। आप टेक्स्ट की एक स्ट्रिंग का उपयोग करके किसी पंक्ति की शुरुआत में या अंत में वैकल्पिक शब्दों, विशिष्ट तिथियों या वर्षों की श्रेणी में वर्ण श्रेणियों की खोज कर सकते हैं।
रेगुलर एक्सप्रेशन में महारत हासिल करने के लिए हमारी रेगुलर एक्सप्रेशन चीटशीट देखना न भूलें।