पायथन के साथ नियमित अभिव्यक्तियों के लिए शुरुआती मार्गदर्शिका

पायथन के साथ नियमित अभिव्यक्तियों के लिए शुरुआती मार्गदर्शिका

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





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





रेगुलर एक्सप्रेशन क्या हैं?

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





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

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



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

एंड्रॉइड पर गेम को तेजी से कैसे चलाएं

रेगुलर एक्सप्रेशन: मिलान वर्ण और अनुक्रम

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





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

रेगुलर एक्सप्रेशन पैटर्न में उपयोग किए जाने वाले विशेष क्रम हैं:

  1. प्रति: यदि स्ट्रिंग की शुरुआत में बाद के अक्षर मौजूद हैं तो एक मैच लौटाता है। उदाहरण के लिए, Athe से शुरू होने वाले शब्दों से मेल खाएगा NS जैसे, उन्हें, वे, आदि।
  2. बी: यदि वर्ण किसी शब्द की शुरुआत या अंत में पाया जाता है तो एक मैच लौटाता है। उदाहरण के लिए, bmad तथा पागल जैसे शब्दों से मेल खाएगा बनाया गया तथा बंजारा क्रमश।
  3. बी: यदि किसी शब्द के आरंभ या अंत में वर्ण नहीं मिलता है तो एक मैच लौटाता है।
  4. डी: स्ट्रिंग में मौजूद संख्यात्मक वर्णों से मेल खाता है। उदाहरण के लिए, /डी* 1, 12, 1232, आदि जैसी संख्याओं से मेल खाएगा।
  5. डी: स्ट्रिंग में गैर-संख्यात्मक वर्णों से मेल खाता है। /डी ए, बी, सी, एफ, आदि से मेल खाएगा।
  6. एस: टेक्स्ट में एक व्हाइटस्पेस कैरेक्टर से मेल खाता है।
  7. एस: पाठ में एक गैर-व्हाट्सएप वर्ण से मेल खाता है।
  8. में: यदि स्ट्रिंग में अंडरस्कोर सहित अल्फ़ान्यूमेरिक वर्ण हैं तो एक मिलान लौटाता है। उदाहरण के लिए, में ए, बी, सी, डी, 1, 2, 3, आदि से मेल खाएगा।
  9. में: यदि स्ट्रिंग में अल्फ़ान्यूमेरिक वर्ण या अंडरस्कोर नहीं है, तो एक मैच लौटाता है।
  10. साथ: एक स्ट्रिंग के अंत में वर्णों से मेल खाता है। उदाहरण के लिए, अंत से खत्म होने वाले शब्दों से मेल खाएगा समाप्त जैसे झुकना, सुधारना, झुकना आदि।

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

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





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

import re

ध्यान दें कि पायथन में रेगुलर एक्सप्रेशन पास करते समय, हम कच्चे स्ट्रिंग्स का उपयोग करते हैं क्योंकि वे विशेष वर्णों की व्याख्या नहीं करते हैं जैसे कि एन तथा टी अलग ढंग से।

मिलान()

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

re.match(pattern, string)

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

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

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

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

आउटपुट:

None

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

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

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

आउटपुट:

Word

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

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

Word

सब ढूँढ़ो()

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

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

विभाजित करना()

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

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

आउटपुट:

['This word', 'that', 'this are different.']

विषय()

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

re.sub(pattern, replacement, string)

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

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

आउटपुट:

Dave or Harry must be punished.

संकलित करें ()

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

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

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

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

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

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

साझा करना साझा करना कलरव ईमेल नवोदित प्रोग्रामर के लिए पायथन रेगेक्स चीट शीट

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

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • अजगर
लेखक के बारे में Deepesh Sharma(79 लेख प्रकाशित)

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

दीपेश शर्मा की अन्य फ़िल्में-टीवी शो

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

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें