उन्नत नियमित अभिव्यक्तियों की शक्ति को अनलॉक करना
रेगुलर एक्सप्रेशन (रेगेक्स) पैटर्न मिलान और टेक्स्ट हेरफेर के लिए मजबूत उपकरण प्रदान करते हैं। यह लेख उन्नत रेगेक्स अवधारणाओं की खोज करता है जो आपको जटिल टेक्स्ट-प्रोसेसिंग कार्यों को सटीक और कुशलता से निपटाने में सक्षम बनाता है।
आगे और पीछे के दावे
लुकअहेड और लुकबिहाइंड एश्योरेंस आपको किसी पैटर्न का मिलान तभी करने देते हैं जब उसके पहले या बाद में कोई दूसरा पैटर्न हो। वे संदर्भ को मिलान में शामिल किए बिना सुनिश्चित करने के लिए उपयोगी होते हैं।
- सकारात्मक लुकअहेड
(?=...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके बाद निर्दिष्ट अभिव्यक्ति हो। - नकारात्मक लुकअहेड
(?!...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके बाद निर्दिष्ट अभिव्यक्ति नहीं आती है। - सकारात्मक लुकबिहाइंड
(?<=...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके पहले निर्दिष्ट अभिव्यक्ति हो। - नकारात्मक लुकबिहाइंड
(?<!...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके पहले निर्दिष्ट अभिव्यक्ति न हो।
उदाहरण:
(?<=Mr\.\s|Mrs\.\s)[A-Z]\w+
यह रेगेक्स उन नामों से मेल खाता है जिनके पहले "Mr." या "Mrs." आता है।
सशर्त पैटर्न
सशर्त पैटर्न आपको किसी निश्चित शर्त के पूरा होने के आधार पर अलग-अलग पैटर्न का मिलान करने की अनुमति देते हैं। इसका सिंटैक्स (?(condition)true-pattern|false-pattern)
है।
उदाहरण:
(\d{3}-)?(?(1)\d{3}-\d{4}|\d{7})
यह रेगेक्स क्षेत्र कोड के साथ या उसके बिना फोन नंबरों का मिलान करता है।
सबरूटीन्स और रिकर्सन
सबरूटीन और रिकर्सन आपको उसी रेगेक्स के भीतर पैटर्न का पुनः उपयोग करने या नेस्टेड संरचनाओं से मिलान करने में सक्षम बनाते हैं। यह विशेष रूप से जटिल और नेस्टेड डेटा के लिए उपयोगी है।
उदाहरण:
(?<group>\((?>[^()]+|(?&group))*\))
यह रेगेक्स संतुलित कोष्ठकों को नेस्टेड स्तरों से मेल खाता है।
अधिकारपूर्ण परिमाणक
अधिकारपूर्ण क्वांटिफायर रेगेक्स इंजन को बैकट्रैकिंग से रोकते हैं, जिससे प्रदर्शन में सुधार हो सकता है, जब आप यह सुनिश्चित करना चाहते हैं कि कोई बैकट्रैकिंग न हो।
उदाहरण:
\w++
यह रेगेक्स शब्द वर्णों के अनुक्रम का स्वामित्वपूर्वक मिलान करता है, जिसका अर्थ है कि एक बार मिलान हो जाने पर यह वर्णों को नहीं छोड़ेगा।
बेहतर मिलान के लिए झंडों का उपयोग करना
रेगेक्स फ़्लैग पैटर्न मिलान के व्यवहार को संशोधित करते हैं। कुछ सामान्य फ़्लैग में शामिल हैं:
- i: केस-असंवेदनशील मिलान.
- m: बहुपंक्ति मोड,
^
और$
के व्यवहार को प्रभावित करता है। - s: Dotall मोड,
.
को नई लाइन वर्णों से मिलान करने की अनुमति देता है। - x: रिक्त स्थान की उपेक्षा करें और पठनीयता के लिए पैटर्न के भीतर टिप्पणियों की अनुमति दें।
उदाहरण:
/pattern/imsx
यह पैटर्न केस-इन्सेन्टिव, मल्टीलाइन, डॉटऑल और विस्तारित मोड लागू करता है।
प्रोग्रामिंग भाषाओं में उदाहरण
पायथन और जावास्क्रिप्ट में उन्नत रेगेक्स के उपयोग के कुछ उदाहरण यहां दिए गए हैं:
पायथन उदाहरण
import re
# Match a name preceded by Mr. or Mrs.
pattern = r'(?<=Mr\.|Mrs\.)\s[A-Z]\w+'
text = 'Mr. Smith and Mrs. Johnson'
matches = re.findall(pattern, text)
for match in matches:
print('Match found:', match)
जावास्क्रिप्ट उदाहरण
// Match a name preceded by Mr. or Mrs.
const pattern = /(?<=Mr\.|Mrs\.)\s[A-Z]\w+/g;
const text = 'Mr. Smith and Mrs. Johnson';
const matches = text.match(pattern);
if (matches) {
matches.forEach(match => console.log('Match found:', match));
}
निष्कर्ष
लुकबिहाइंड एश्योरेंस, कंडीशनल पैटर्न, सबरूटीन, रिकर्सन और पॉज़िटिव क्वांटिफ़ायर जैसी उन्नत रेगेक्स तकनीकें जटिल टेक्स्ट प्रोसेसिंग के लिए रेगेक्स की क्षमताओं का विस्तार करती हैं। इन अवधारणाओं में महारत हासिल करने से आप अधिक दक्षता और सटीकता के साथ परिष्कृत मिलान और हेरफेर कार्यों को संभालने में सक्षम हो जाते हैं।