इस अध्याय में, हम पाइथन में नियमित अभिव्यक्ति (Regular Expressions) के बारे में जानेंगे। नियमित अभिव्यक्ति एक शक्तिशाली उपकरण है जो टेक्स्ट में पैटर्न को पहचानने, खोजने, और संशोधित करने की अनुमति देता है। यह टेक्स्ट मैनिपुलेशन और डेटा वैलिडेशन के लिए बहुत उपयोगी है। इस अध्याय में, हम नियमित अभिव्यक्ति का निर्माण, बुनियादी पैटर्न, विशेष वर्ण, समूह बनाना, मिलान, खोज और प्रतिस्थापन, विभाजन, प्रैक्टिकल उदाहरण, और उपयोगी टिप्स के बारे में जानेंगे।
नियमित अभिव्यक्ति क्या है? (What is a Regular Expression?)
नियमित अभिव्यक्ति (Regular Expression) एक विशेष टेक्स्ट स्ट्रिंग है जो पैटर्न को परिभाषित करती है। इसे अक्सर regex या regexp कहा जाता है। नियमित अभिव्यक्ति का उपयोग टेक्स्ट में पैटर्न को पहचानने, खोजने, और संशोधित करने के लिए किया जाता है।
उदाहरण:
import re pattern = r"\d+" # एक या अधिक अंकों का पैटर्न text = "My phone number is 12345." result = re.findall(pattern, text) print(result) # आउटपुट: ['12345']
नियमित अभिव्यक्ति का निर्माण (Creating Regular Expressions)
पाइथन में नियमित अभिव्यक्ति बनाने के लिए re
मॉड्यूल का उपयोग किया जाता है। re
मॉड्यूल में विभिन्न विधियाँ और कार्य होते हैं जो नियमित अभिव्यक्ति के साथ काम करने में मदद करते हैं।
उदाहरण:
import re pattern = r"\w+" # एक या अधिक वर्णों का पैटर्न text = "Hello, World!" result = re.findall(pattern, text) print(result) # आउटपुट: ['Hello', 'World']
बुनियादी पैटर्न (Basic Patterns)
नियमित अभिव्यक्ति में विभिन्न बुनियादी पैटर्न होते हैं जो विशेष प्रकार के टेक्स्ट को पहचानने में मदद करते हैं।
उदाहरण:
\d
: एक अंक (digit)\D
: एक गैर-अंक (non-digit)\w
: एक वर्ण (word character)\W
: एक गैर-वर्ण (non-word character)\s
: एक व्हाइटस्पेस (whitespace)\S
: एक गैर-व्हाइटस्पेस (non-whitespace)
उदाहरण:
import re pattern = r"\d{3}-\d{2}-\d{4}" # XXX-XX-XXXX फॉर्मेट का पैटर्न text = "My social security number is 123-45-6789." result = re.findall(pattern, text) print(result) # आउटपुट: ['123-45-6789']
विशेष वर्ण (Special Characters)
नियमित अभिव्यक्ति में कुछ विशेष वर्ण होते हैं जिनका उपयोग विशेष कार्यों के लिए किया जाता है।
उदाहरण:
.
: कोई भी एकल वर्ण^
: स्ट्रिंग की शुरुआत$
: स्ट्रिंग का अंत*
: शून्य या अधिक पुनरावृत्तियाँ+
: एक या अधिक पुनरावृत्तियाँ?
: शून्य या एक पुनरावृत्तियाँ[]
: वर्णों का सेट|
: या (or) ऑपरेटर()
: समूह बनाना
उदाहरण:
import re pattern = r"[A-Za-z]+" # एक या अधिक वर्ण (A-Z या a-z) text = "Hello, World! 123" result = re.findall(pattern, text) print(result) # आउटपुट: ['Hello', 'World']
समूह बनाना (Creating Groups)
समूह बनाना (grouping) का उपयोग पैटर्न के भागों को एकत्रित करने के लिए किया जाता है। समूह बनाने के लिए कोष्ठकों ()
का उपयोग किया जाता है।
उदाहरण:
import re pattern = r"(\d{3})-(\d{2})-(\d{4})" # समूह बनाना text = "My social security number is 123-45-6789." match = re.search(pattern, text) if match: print(match.groups()) # आउटपुट: ('123', '45', '6789')
मिलान (Matching)
नियमित अभिव्यक्ति का उपयोग मिलान (matching) के लिए किया जा सकता है। match()
, search()
, और fullmatch()
विधियाँ मिलान के लिए उपयोग की जाती हैं।
उदाहरण:
import re pattern = r"Hello" text = "Hello, World!" match = re.match(pattern, text) if match: print("Match found!") # आउटपुट: Match found! else: print("No match found.")
खोज और प्रतिस्थापन (Search and Replace)
नियमित अभिव्यक्ति का उपयोग टेक्स्ट में खोज और प्रतिस्थापन (search and replace) के लिए किया जा सकता है। sub()
विधि प्रतिस्थापन के लिए उपयोग की जाती है।
उदाहरण:
import re pattern = r"\d+" text = "My phone number is 12345." new_text = re.sub(pattern, "XXXXX", text) print(new_text) # आउटपुट: My phone number is XXXXX.
विभाजन (Splitting)
नियमित अभिव्यक्ति का उपयोग टेक्स्ट को विभाजित (split) करने के लिए किया जा सकता है। split()
विधि विभाजन के लिए उपयोग की जाती है।
उदाहरण:
import re pattern = r"\s+" # एक या अधिक व्हाइटस्पेस text = "This is a sample text." result = re.split(pattern, text) print(result) # आउटपुट: ['This', 'is', 'a', 'sample', 'text.']
प्रैक्टिकल उदाहरण (Practical Examples)
इस सेक्शन में, हम नियमित अभिव्यक्ति के कुछ प्रैक्टिकल उदाहरण देखेंगे।
- ईमेल वैलिडेशन (Email Validation):
import re pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" email = "example@example.com" if re.match(pattern, email): print("Valid email address.") else: print("Invalid email address.")
- फ़ोन नंबर वैलिडेशन (Phone Number Validation):
import re pattern = r"^\d{3}-\d{3}-\d{4}$" phone_number = "123-456-7890" if re.match(pattern, phone_number): print("Valid phone number.") else: print("Invalid phone number.")
उपयोगी टिप्स (Useful Tips)
- पैटर्न को सरल रखें (Keep Patterns Simple): नियमित अभिव्यक्ति के पैटर्न को सरल और स्पष्ट रखें।
- टेस्ट और डिबग करें (Test and Debug): नियमित अभिव्यक्ति को विभिन्न इनपुट्स के साथ टेस्ट और डिबग करें।
- मॉड्यूलर पैटर्न का उपयोग करें (Use Modular Patterns): जटिल पैटर्न के लिए मॉड्यूलर पैटर्न का उपयोग करें और उन्हें छोटे भागों में विभाजित करें।
- अभ्यास करें (Practice): नियमित अभिव्यक्ति के साथ अभ्यास करें और विभिन्न समस्याओं को हल करने के लिए इसका उपयोग करें।