Python में रेगुलर एक्सप्रेशन्स में महारथ
रेगुलर एक्सप्रेशन्स (रेगेक्स या रेगेक्सप) स्ट्रिंग्स में पैटर्न मिलान के लिए शक्तिशाली उपकरण हैं। पाइथन का re
मॉड्यूल उनके साथ काम करने के लिए एक व्यापक इंटरफ़ेस प्रदान करता है, जिससे परिष्कृत टेक्स्ट मैनिपुलेशन और डेटा एक्सट्रैक्शन संभव होता है। यह ट्यूटोरियल आपको आवश्यक कार्यों और अवधारणाओं के माध्यम से मार्गदर्शन करेगा, जिससे आप अपने पाइथन प्रोजेक्ट्स में रेगुलर एक्सप्रेशन्स की शक्ति का प्रभावी ढंग से उपयोग करने में सक्षम होंगे।
विषयवस्तु की तालिका
re.match()
: शुरुआत में मिलानre.search()
: पहला मिलान ढूँढनाre.compile()
: प्रदर्शन का अनुकूलन- Flags: मिलान व्यवहार को संशोधित करना
- Character Sets: अनुमत वर्णों को परिभाषित करना
re.sub()
के साथ खोज और प्रतिस्थापनre.findall()
: सभी मिलानों को निकालनाre.finditer()
: मिलानों के माध्यम से पुनरावृतिre.split()
: पैटर्न द्वारा स्ट्रिंग्स को विभाजित करना- बेसिक पैटर्न्स: एंकर, कैरेक्टर क्लासेस
- पुनरावृत्ति: क्वांटिफायर और लालची बनाम गैर-लालची मिलान
- विशेष अनुक्रम: अंक, व्हाइटस्पेस, शब्द वर्ण
re.escape()
: विशेष वर्णों को संभालना- कैप्चरिंग ग्रुप्स और
group()
मेथड
1. re.match()
: शुरुआत में मिलान
re.match()
फ़ंक्शन केवल स्ट्रिंग की शुरुआत में ही पैटर्न से मिलान करने का प्रयास करता है। यदि सफल होता है, तो यह एक मिलान ऑब्जेक्ट लौटाता है, अन्यथा None
।
import re
text = "Hello World"
pattern = "Hello"
match = re.match(pattern, text)
if match:
print("मिलान मिला:", match.group(0))
else:
print("कोई मिलान नहीं मिला")
2. re.search()
: पहला मिलान ढूँढना
re.search()
पैटर्न की पहली घटना के लिए पूरी स्ट्रिंग को स्कैन करता है। re.match()
के विपरीत, इसे मिलान के शुरुआत में होने की आवश्यकता नहीं है।
import re
text = "Hello World"
pattern = "World"
match = re.search(pattern, text)
if match:
print("मिलान मिला:", match.group(0))
else:
print("कोई मिलान नहीं मिला")
3. re.compile()
: प्रदर्शन का अनुकूलन
बेहतर प्रदर्शन के लिए, विशेष रूप से एक ही पैटर्न के बार-बार उपयोग के साथ, re.compile()
का उपयोग करके इसे संकलित करें। यह एक पुन: प्रयोज्य पैटर्न ऑब्जेक्ट बनाता है।
import re
compiled_pattern = re.compile(r"d+") # पैटर्न को संकलित करें
text1 = "There are 123 apples"
text2 = "And 456 oranges"
match1 = compiled_pattern.search(text1)
match2 = compiled_pattern.search(text2)
print(match1.group(0)) # आउटपुट: 123
print(match2.group(0)) # आउटपुट: 456
4. Flags: मिलान व्यवहार को संशोधित करना
Flags मिलान प्रक्रिया को संशोधित करते हैं। re.IGNORECASE
केस-असंवेदनशील मिलान करता है, और re.MULTILINE
प्रत्येक पंक्ति को ^
और $
एंकर के लिए एक अलग स्ट्रिंग के रूप में मानता है।
import re
text = "Hello world"
pattern = re.compile("hello", re.IGNORECASE)
match = pattern.search(text)
print(match.group(0)) # आउटपुट: Hello
5. Character Sets: अनुमत वर्णों को परिभाषित करना
Character sets ([]
) अनुमत वर्णों को निर्दिष्ट करते हैं। उदाहरण के लिए, [a-z]
लोअरकेस अक्षरों से मेल खाता है।
import re
text = "abc123XYZ"
pattern = re.compile("[a-z]+")
match = pattern.search(text)
print(match.group(0)) # आउटपुट: abc
6. re.sub()
के साथ खोज और प्रतिस्थापन
re.sub()
एक प्रतिस्थापन स्ट्रिंग के साथ एक पैटर्न की घटनाओं को बदल देता है।
import re
text = "Hello World"
new_text = re.sub("World", "Python", text)
print(new_text) # आउटपुट: Hello Python
7. re.findall()
: सभी मिलानों को निकालना
re.findall()
सभी गैर-ओवरलैपिंग मिलानों की एक सूची लौटाता है।
import re
text = "123 abc 456 def"
numbers = re.findall(r"d+", text)
print(numbers) # आउटपुट: ['123', '456']
8. re.finditer()
: मिलानों के माध्यम से पुनरावृति
re.finditer()
एक पुनरावृत्तक लौटाता है, जो मिलान ऑब्जेक्ट उत्पन्न करता है। बड़ी स्ट्रिंग्स में कई मिलानों के लिए अधिक मेमोरी-कुशल।
import re
text = "123 abc 456 def"
for match in re.finditer(r"d+", text):
print(match.group(0)) # आउटपुट: 123, 456 (अलग-अलग लाइनों पर)
9. re.split()
: पैटर्न द्वारा स्ट्रिंग्स को विभाजित करना
re.split()
एक पैटर्न के आधार पर एक स्ट्रिंग को विभाजित करता है।
import re
text = "apple,banana,cherry"
fruits = re.split(r",", text)
print(fruits) # आउटपुट: ['apple', 'banana', 'cherry']
10. बेसिक पैटर्न्स: एंकर, कैरेक्टर क्लासेस
.
: न्यूलाइन को छोड़कर किसी भी वर्ण से मेल खाता है।^
: स्ट्रिंग की शुरुआत से मेल खाता है।$
: स्ट्रिंग के अंत से मेल खाता है।[]
: वर्णों के एक सेट से मेल खाता है (जैसे,[abc]
,[a-z]
)।[^...]
: सेट में *नहीं* किसी भी वर्ण से मेल खाता है (नकारात्मक वर्ण सेट)।
11. पुनरावृत्ति: क्वांटिफायर और लालची बनाम गैर-लालची मिलान
*
: शून्य या अधिक घटनाएँ।+
: एक या अधिक घटनाएँ।?
: शून्य या एक घटना।{m}
: ठीकm
घटनाएँ।{m,n}
:m
सेn
घटनाएँ।*?
,+?
,??
,{m,n}?
: गैर-लालची संस्करण (सबसे छोटी संभव स्ट्रिंग से मेल खाते हैं)।
12. विशेष अनुक्रम: अंक, व्हाइटस्पेस, शब्द वर्ण
d
: किसी भी अंक (0-9) से मेल खाता है।D
: किसी भी गैर-अंक वर्ण से मेल खाता है।s
: किसी भी व्हाइटस्पेस वर्ण (रिक्त स्थान, टैब, न्यूलाइन) से मेल खाता है।S
: किसी भी गैर-व्हाइटस्पेस वर्ण से मेल खाता है।w
: किसी भी अल्फ़ान्यूमेरिक वर्ण (अक्षर, संख्याएँ, अंडरस्कोर) से मेल खाता है।W
: किसी भी गैर-अल्फ़ान्यूमेरिक वर्ण से मेल खाता है।
13. re.escape()
: विशेष वर्णों को संभालना
re.escape()
एक स्ट्रिंग में विशेष वर्णों को एस्केप करता है, जिससे आप इसे अनपेक्षित रेगेक्स व्याख्याओं के बिना एक शाब्दिक पैटर्न के रूप में उपयोग कर सकते हैं।
14. कैप्चरिंग ग्रुप्स और group()
मेथड
पैरेन्थेसिस ()
कैप्चरिंग ग्रुप्स बनाते हैं। group()
मेथड कैप्चर किए गए सबस्ट्रिंग्स तक पहुँचता है।
import re
text = "My phone number is 123-456-7890"
match = re.search(r"(d{3})-(d{3})-(d{4})", text)
if match:
area_code = match.group(1)
prefix = match.group(2)
line_number = match.group(3)
print(f"Area Code: {area_code}, Prefix: {prefix}, Line Number: {line_number}")
यह ट्यूटोरियल पाइथन के re
मॉड्यूल में एक ठोस आधार प्रदान करता है। उन्नत तकनीकों का आगे अन्वेषण आपकी स्ट्रिंग प्रोसेसिंग क्षमताओं को महत्वपूर्ण रूप से बढ़ाएगा। संपूर्ण संदर्भ के लिए आधिकारिक पाइथन दस्तावेज़ देखें।