यदि आप एक प्रोग्रामर हैं, तो संभावना है कि आप पहले से ही जानते हैं कि नियमित अभिव्यक्ति (रेगेक्स) क्या हैं। रेगेक्स पैटर्न को लगभग हर मुख्यधारा की प्रोग्रामिंग भाषा में लागू किया गया है, लेकिन फिर भी, अधिकांश डेवलपर्स द्वारा इन पैटर्नों की शक्ति और बहुमुखी प्रतिभा को पहचाना नहीं जाता है।

यह मार्गदर्शिका सभी नियमित अभिव्यक्तियों के बारे में है और आप उन्हें पायथन प्रोग्रामिंग भाषा में कैसे उपयोग कर सकते हैं।

नियमित अभिव्यक्तियाँ क्या हैं?

नियमित अभिव्यक्ति ऐसे पैटर्न हैं जो टेक्स्ट फाइल और स्ट्रिंग्स में एक उपयोगकर्ता मैच कैरेक्टर कॉम्बिनेशन की मदद करते हैं। आप कमांड या डॉक्यूमेंट के आउटपुट में एक विशिष्ट पैटर्न को फ़िल्टर करने या खोजने के लिए नियमित अभिव्यक्तियों का उपयोग कर सकते हैं।

नियमित अभिव्यक्ति के विभिन्न उपयोग के मामले हैं, जो सबसे प्रसिद्ध हैं लिनक्स में grep कमांड. अन्य अनुप्रयोगों में डेटा डंपिंग से ईमेल पते और फोन नंबर निकालने जैसी जानकारी फ़िल्टर करना शामिल है।

कई डेवलपर्स नियमित अभिव्यक्तियों से दूर होने का मुख्य कारण पैटर्न मिलान की शक्ति के बारे में जागरूकता की कमी है। कुछ भी नियमित अभिव्यक्तियों को भ्रामक वर्णों और अनुक्रमों में इस्तेमाल किए जाने वाले दृश्यों की वजह से भ्रमित करते हैं।

जो भी कारण हो सकता है, नियमित अभिव्यक्ति हैं और प्रोग्रामिंग के सबसे महत्वपूर्ण पहलुओं में से एक होगा जिसके बारे में सभी को पता होना चाहिए।

रेगुलर एक्सप्रेशंस: मैचिंग कैरेक्टर्स एंड सीक्वेंस

Regex अपने आप में एक पूरी नई भाषा है। एक रेगेक्स इंजन में विशिष्ट अर्थों से लैस कई पात्रों की व्याख्या की जाती है। मूल अक्षर जैसे अल्फ़ान्यूमेरिक वर्ण स्वयं से मेल खाते हैं। लेकिन जटिल वर्ण जैसे $, *, +, {, आदि। उच्च-क्रम मिलान में सहायता।

  1. तारांकन (*): पूर्ववर्ती वर्ण शून्य या अधिक बार मेल खाता है। चरित्र का शाब्दिक अर्थ "तत्व एन गुणा गुणा" होगा। उदाहरण के लिए, यदि नियमित अभिव्यक्ति है एबीसी *मिलान किए गए तार ab, abc, abcc, abccc, abcccc, आदि होंगे। इजहार [बीसी] * मिलान करेगा बीसी, बीबीसी, बीबीसी आदि।
  2. प्लस (+): एक या अधिक बार पूर्ववर्ती चरित्र से मेल खाता है। का काम + चरित्र के समान है *, लेकिन + यदि चरित्र उत्पन्न नहीं होता है तो चरित्र पैटर्न को छोड़ देता है। उदाहरण के लिए, abc + abc, abcc, abccc आदि से मेल खाएगा। लेकिन अब नहीं।
  3. प्रश्न चिह्न (?): पूर्ववर्ती वर्ण शून्य या एक समय (s) से मेल खाता है। उदाहरण के लिए, पैटर्न abc? ab और abc से ही मेल खाएगा।
  4. पाइप (|): बाइनरी के रूप में उपयोग किया जाता है या ऑपरेटर। पाइप से पहले और सफल होने वाले पात्रों में से किसी एक से मेल खाता है। उदाहरण के लिए, ए | बी या तो एक या बी मैच होगा।
  5. डॉट (।): एक ऐसे चरित्र से मेल खाता है जिसकी पहचान अज्ञात है। उदाहरण के लिए, एसी aac, abc, acc, a2c इत्यादि का मिलान करेगा।
  6. गाजर (^): पैटर्न में पहले चरित्र से मेल खाता है। उदाहरण के लिए, ^ रा से शुरू होने वाले शब्दों से मेल खाएगा आरए जैसे रैबिट, रैकोन और रैंडम।
  7. डॉलर ($): पैटर्न में अंतिम वर्ण से मेल खाता है। उदाहरण के लिए, एक $ के साथ समाप्त होने वाले शब्दों से मेल खाएगा एक जैसे वैन, डैन, और प्लान।
  8. हाइफ़न (-): पात्रों की एक श्रृंखला को परिभाषित करने के लिए उपयोग किया जाता है। उदाहरण के लिए, [0-9] सभी एकल-अंक संख्यात्मक वर्णों से मेल खाएगा।

नियमित अभिव्यक्ति पैटर्न में प्रयुक्त विशेष क्रम हैं:

  1. \ए: एक मैच लौटाता है यदि सफल अक्षर स्ट्रिंग की शुरुआत में मौजूद हैं। उदाहरण के लिए, \ AThe से शुरू होने वाले शब्दों से मेल खाएगा जैसे कि, उन्हें, वे, आदि।
  2. \ b: एक मैच लौटाता है यदि चरित्र शुरुआत में या किसी शब्द के अंत में पाया जाता है। उदाहरण के लिए, \ _ बामड तथा पागल \ b जैसे शब्दों से मेल खाएगा बनाया गया तथा बंजारा क्रमशः।
  3. \ B: यदि किसी शब्द की शुरुआत या अंत में चरित्र नहीं मिला है तो एक मैच लौटाता है।
  4. \ _: स्ट्रिंग में मौजूद संख्यात्मक वर्णों से मेल खाता है। उदाहरण के लिए, /d* 1, 12, 1232 आदि जैसे संख्याओं से मेल खाएगा।
  5. \ _: स्ट्रिंग में गैर-संख्यात्मक वर्णों से मेल खाता है। / डी a, b, c, f, आदि से मेल खाएगा।
  6. \ s: पाठ में एक व्हाट्सएप चरित्र से मेल खाता है।
  7. \ S: पाठ में एक गैर-व्हाट्सएप चरित्र से मेल खाता है।
  8. \ w: एक मिलान लौटाता है यदि स्ट्रिंग में अल्फ़ान्यूमेरिक वर्ण शामिल हैं जिसमें अंडरस्कोर शामिल है। उदाहरण के लिए, \ w a, b, c, d, 1, 2, 3, आदि से मेल खाएगा।
  9. \ W: यदि स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण या अंडरस्कोर नहीं है, तो एक मैच लौटाता है।
  10. \ Z: एक स्ट्रिंग के अंत में पात्रों से मेल खाता है। उदाहरण के लिए, अंत \ Z के साथ समाप्त होने वाले शब्दों से मेल खाएगा समाप्त जैसे कि मोड़, मोड़, प्रवृत्ति, आदि।

नियमित अभिव्यक्तियों के लिए पायथन विधियाँ

पायथन में, द पुन पुस्तकालय आपके कार्यक्रमों में रेगेक्स को लागू करने के लिए आवश्यक सभी आवश्यक कार्य और उपयोगिताओं को प्रदान करता है। आपको पाइल का उपयोग करके लाइब्रेरी को डाउनलोड करने की आवश्यकता नहीं है क्योंकि यह पायथन इंटरप्रेटर के साथ पूर्वस्थापित है।

आयात करने के लिए पुन पायथन में पुस्तकालय, अपनी स्क्रिप्ट में निम्नलिखित कोड जोड़ें:

आयात फिर से

ध्यान दें कि पायथन में नियमित रूप से अभिव्यक्ति करते समय, हम कच्चे तारों का उपयोग करते हैं क्योंकि वे विशेष पात्रों की व्याख्या नहीं करते हैं जैसे कि \ n तथा \ t अलग तरह से।

मैच ()

पुनः प्रेषण () यदि प्रोग्राम निर्दिष्ट स्ट्रिंग की शुरुआत में एक मैच पाता है, तो पायथन में विधि एक रेगेक्स ऑब्जेक्ट देता है। यह फ़ंक्शन दो बुनियादी तर्क देता है:

re.match (पैटर्न, स्ट्रिंग)

...कहां है प्रतिरूप नियमित अभिव्यक्ति है और तार वह पाठ है जिसे खोजे जाने की आवश्यकता है।

नीचे दिए गए कोड स्निपेट पर एक नज़र डालें।

आयात फिर से
मैच = re.match (r'Word), "इस वाक्य में एक शब्द है")
प्रिंट (मैच)

आर स्ट्रिंग से पहले चरित्र कच्चे स्ट्रिंग के लिए खड़ा है।

आउटपुट:

कोई नहीं

पूर्वोक्त कोड रिटर्न कोई नहीं चूंकि शब्द स्ट्रिंग की शुरुआत में मौजूद नहीं था।

यदि कोई मैच पाया जाता है, तो आप मैच का उपयोग करके प्रिंट कर सकते हैं समूह () विधि जो रेगेक्स ऑब्जेक्ट से संबंधित है।

आयात फिर से
मैच = re.match (r'Word ', "शब्द पढ़ना मुश्किल है")
प्रिंट (मैच.ग्रुप (0))

आउटपुट:

शब्द

खोज()

अनुसंधान() विधि पुनः तर्क के रूप में समान तर्क लेती है ()। जबकि मैच () केवल स्ट्रिंग की शुरुआत में मौजूद मैच देता है, खोज कर() स्ट्रिंग में किसी भी इंडेक्स पर पाए गए मैच लौटाएगा।

आयात फिर से
मैच = re.search (r'Word), "इस वाक्य में एक शब्द है। शब्द पढ़ना कठिन है। ")
प्रिंट (मैच.ग्रुप (0))

ध्यान दें कि मैच () तथा खोज कर() विधियाँ केवल एक पैटर्न मिलान लौटाएंगी। उपर्युक्त कोड में, शब्द दो बार दिखाई देता है। लेकिन खोज कर() फ़ंक्शन केवल शब्द की पहली घटना से मेल खाएगा।

शब्द

सब ढूँढ़ो()

जैसा कि आप पहले से ही अनुमान लगा सकते हैं, सब ढूँढ़ो() विधि स्ट्रिंग में हर संभव मैच लौटाती है।

आयात फिर से
मैच = re.search (r'Word), "इस वाक्य में एक शब्द है। शब्द पढ़ना कठिन है। ")
मैच में हाथी के लिए:
प्रिंट (हाथी)

रेगेक्स ऑब्जेक्ट वापस करने के बजाय, फ़ंडॉल () फ़ंक्शन सभी मैचों की सूची देता है। आप का उपयोग कर सूची के माध्यम से iterate कर सकते हैं अजगर में पाश के लिए.

विभाजित करें()

यदि आप एक स्ट्रिंग को एक सीमांकक के रूप में एक पैटर्न का उपयोग करके उप-स्ट्रिंग्स में विभाजित करना चाहते हैं, तो ए विभाजित करें() फ़ंक्शन वह है जिसकी आपको आवश्यकता है।

आयात फिर से
विभाजित = re.split (r'and), "यह शब्द और वह और यह अलग हैं।"
प्रिंट (विभाजित)

आउटपुट:

['यह शब्द "," वह "," यह अलग हैं। "]

विषय()

विषय() विधि उपयोगकर्ता को एक पैटर्न के स्थान पर एक विशिष्ट शब्द को प्रतिस्थापित करने की अनुमति देती है। इसमें निम्न तर्क दिए गए हैं।

re.sub (पैटर्न, प्रतिस्थापन, स्ट्रिंग)

इस कोड स्निपेट पर विचार करें:

आयात फिर से
परिणाम = re.sub (r'and), 'या', "डेव और हैरी को दंडित किया जाना चाहिए।")
प्रिंट (परिणाम)

आउटपुट:

डेव या हैरी को दंडित किया जाना चाहिए।

संकलन ()

re.compile () में विधि पुन पुस्तकालय उपयोगकर्ता को स्मृति में नियमित अभिव्यक्ति पैटर्न के संकलित संस्करण को संग्रहीत करने की अनुमति देता है। फिर, संकलित वस्तु का उपयोग करके, उपयोगकर्ता मिलान किए गए पैटर्न के लिए निर्दिष्ट पाठ डंप को जल्दी से फ़िल्टर कर सकता है।

आयात फिर से
पैटर्न = re.compile ('पायथन')
मैच = pattern.findall (स्क्रिप्ट लिखने के लिए पायथन एक बेहतरीन भाषा है। अजगर सीखना आसान है। ")
प्रिंट (मैच)

यह फ़ंक्शन मुख्य रूप से बचत करने वाले पैटर्न के लिए उपयोग किया जाता है जो संसाधन-गहन हैं और चलाने के लिए बहुत समय की आवश्यकता होती है। इस मुद्दे को हल करने से पहले पैटर्न को एक वस्तु के रूप में संकलित और सहेजना।

पाइथन के साथ रेगेक्स की शक्ति का लाभ उठाएं

जब आप पाठ फ़ाइलों और आउटपुट के साथ काम कर रहे हैं, तो regex आपके निपटान में होने के लिए एक महान उपकरण है। आप दस्तावेज़ में विशिष्ट पैटर्न को फ़िल्टर या स्थानापन्न करने के लिए जल्दी से कुछ कोड लिख सकते हैं।

यदि आप अभी-अभी regex से शुरुआत कर रहे हैं, तो सभी पात्रों को याद रखना और अनुक्रमों का मिलान करना कठिन हो सकता है। नियमित अभिव्यक्तियों में बेहतर पाने के लिए, वर्णों, विधियों और अनुक्रमों की एक सूची का जिक्र करें और निश्चित रूप से लंबे समय में आपकी मदद करेंगे।

ईमेल
बडिंग प्रोग्रामर्स के लिए पायथन रेगेक्स चीट शीट

पायथन नियमित अभिव्यक्तियों की इस सूची का उपयोग करें ताकि आप इस बहुमुखी प्रोग्रामिंग भाषा का उपयोग करके बेहतर हो सकें।

आगे पढ़िए

संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • अजगर
लेखक के बारे में
दीपेश शर्मा (41 लेख प्रकाशित)

दीपेश MUO में लिनक्स के लिए जूनियर एडिटर हैं। वह 3 वर्षों से इंटरनेट पर सूचनात्मक सामग्री लिख रहा है। अपने खाली समय में, उन्हें लिखने, संगीत सुनने और अपने गिटार बजाने में मज़ा आता है।

दीपेश शर्मा से अधिक

हमारे न्यूज़लेटर की सदस्यता

टेक टिप्स, रिव्यू, फ्री ईबुक और एक्सक्लूसिव डील्स के लिए हमारे न्यूज़लेटर से जुड़ें!

एक और क़दम…!

कृपया हमें आपके द्वारा भेजे गए ईमेल में अपने ईमेल पते की पुष्टि करें।

.