रेगुलर एक्सप्रेशन्स (Regex) पैटर्न मिलान के लिए एक शक्तिशाली भाषा है। पायथन में re मॉड्यूल इसका समर्थन करता है।
बुनियादी उपयोग
import re
txt = "Use of python in Machine Learning"
x = re.search("^Use.*Learning$", txt)
if x:
print("YES! We have a match!")
else:
print("No match")
मुख्य re फ़ंक्शन्स
| फ़ंक्शन | विवरण |
findall | सभी मिलान की लिस्ट लौटाता है |
search | पहला मिलान मिलने पर Match ऑब्जेक्ट लौटाता है |
split | मिलान पर स्ट्रिंग विभाजित करके लिस्ट लौटाता है |
sub | मिलान को प्रतिस्थापित करता है |
मेटाकैरेक्टर्स
| कैरेक्टर | विवरण | उदाहरण |
[] | कैरेक्टर सेट | [a-m] |
\ | स्पेशल सीक्वेंस / एस्केप | \d |
. | कोई भी कैरेक्टर (न्यूलाइन छोड़कर) | he..o |
^ | शुरुआत से मिलान | ^Hello |
$ | अंत से मिलान | World$ |
* | शून्य या अधिक | aix* |
+ | एक या अधिक | aix+ |
{n} | ठीक n बार | a{2} |
| | या (alternation) | cat|dog |
() | कैप्चर और ग्रुप | (ab)+ |
स्पेशल सीक्वेंसेस
| सीक्वेंस | विवरण |
\A | स्ट्रिंग की शुरुआत |
\b | वर्ड बाउंड्री |
\B | नॉन-वर्ड बाउंड्री |
\d | डिजिट (0-9) |
\D | नॉन-डिजिट |
\s | व्हाइटस्पेस |
\S | नॉन-व्हाइटस्पेस |
\w | वर्ड कैरेक्टर (a-z, A-Z, 0-9, _) |
\W | नॉन-वर्ड कैरेक्टर |
\Z | स्ट्रिंग का अंत |
सेट्स []
| सेट | विवरण |
[abc] | a, b, या c |
[a-z] | लोअरकेस a से z |
[^abc] | a, b, c के अलावा |
[0-9] | कोई डिजिट |
उदाहरण
findall()
txt = "Use of python in Machine Learning"
print(re.findall("in", txt)) # ['in', 'in', 'in']
print(re.findall("Hello", txt)) # []
search()
txt = "Python is popular"
m = re.search(r"\s", txt)
print(m.start()) # 6 (पहला व्हाइटस्पेस)
split()
string = "Python is popular"
print(re.split(r"\s", string))
# ['Python', 'is', 'popular']
sub()
string = "Python is popular"
print(re.sub(r"\s", "_", string))
# Python_is_popular
Match ऑब्जेक्ट
search() एक Match ऑब्जेक्ट लौटाता है जिसमें मिलान की जानकारी होती है:
.span(): (शुरुआत, अंत) इंडेक्स टपल
.string: मूल स्ट्रिंग
.group(): मिलान वाला भाग
m = re.search(r"\bP\w+", "Python is popular")
print(m.span()) # (0, 6)
print(m.group()) # Python
रॉ स्ट्रिंग्स (r'...')
रजेक्स पैटर्न्स के लिए हमेशा रॉ स्ट्रिंग्स उपयोग करें ताकि बैकस्लैश एस्केप न हों:
re.search(r"\d+", text) # सही
re.search("\d+", text) # गलत: \d एस्केप हो जाता है