उन्नत नियमित अभिव्यक्तियों में गहराई से गोता लगाना
रेगुलर एक्सप्रेशन (रेगेक्स) पैटर्न मिलान और टेक्स्ट हेरफेर के लिए शक्तिशाली उपकरण हैं। बुनियादी बातों से आगे बढ़ते हुए, यह ट्यूटोरियल जटिल टेक्स्ट प्रोसेसिंग कार्यों को संभालने के लिए उन्नत रेगेक्स अवधारणाओं की खोज करता है।
उन्नत लुकअराउंड अभिकथन
लुकअराउंड एश्योरेंस आपको किसी पैटर्न का मिलान केवल तभी करने की अनुमति देता है, जब उसके पहले या बाद में कोई अन्य पैटर्न हो, मिलान में आसपास के पाठ को शामिल किए बिना।
- सकारात्मक लुकअहेड
(?=...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके बाद निर्दिष्ट अभिव्यक्ति हो। - नकारात्मक लुकअहेड
(?!...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके बाद निर्दिष्ट अभिव्यक्ति नहीं आती है। - सकारात्मक लुकबिहाइंड
(?<=...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके पहले निर्दिष्ट अभिव्यक्ति हो। - नकारात्मक लुकबिहाइंड
(?<!...)
: यह सुनिश्चित करता है कि पैटर्न तभी मेल खाता है जब उसके पहले निर्दिष्ट अभिव्यक्ति न हो।
उदाहरण:
(?<=\$)\d+
यह रेगेक्स उन संख्याओं से मेल खाता है जिनके पहले डॉलर का चिह्न आता है।
परमाणु समूह
एक बार जब समूह के अंदर मिलान का प्रयास किया जाता है, तो परमाणु समूह बैकट्रैकिंग को रोकते हैं। वे अनावश्यक बैकट्रैकिंग से बचकर प्रदर्शन को बेहतर बनाने के लिए उपयोगी होते हैं।
उदाहरण:
(?>\d+)\b
यह रेगेक्स अंकों के अनुक्रम को एक परमाणु समूह के रूप में मिलाता है, जिससे बैकट्रैकिंग को रोका जा सकता है।
बैकरेफरेंस
बैकरेफरेंस आपको अपने रेगेक्स पैटर्न में पहले से कैप्चर किए गए समूह का पुनः उपयोग करने की अनुमति देता है। यह दोहराए गए सबस्ट्रिंग के मिलान के लिए उपयोगी है।
उदाहरण:
(\b\w+)\s+\1
यह रेगेक्स एक शब्द के बाद आए उसी शब्द से मेल खाता है।
नामित समूह
नामित समूह आपको कैप्चरिंग समूहों को नाम निर्दिष्ट करने की अनुमति देते हैं, जिससे आपका रेगेक्स अधिक पठनीय हो जाता है और मिलान किए गए डेटा को संदर्भित करना आसान हो जाता है।
उदाहरण:
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
यह रेगेक्स YYYY-MM-DD प्रारूप में तारीखों का मिलान करता है और वर्ष, माह और दिन समूहों को नाम देता है।
पुनरावर्ती पैटर्न
रिकर्सिव पैटर्न रेगेक्स को नेस्टेड संरचनाओं से मेल खाने की अनुमति देते हैं, जैसे कि संतुलित कोष्ठक। यह एक उन्नत सुविधा है जिसे कुछ रेगेक्स इंजन द्वारा समर्थित किया जाता है।
उदाहरण:
\((?>[^()]+|(?R))*\)
यह रेगेक्स संतुलित कोष्ठकों से मेल खाता है।
विभिन्न प्रोग्रामिंग भाषाओं में Regex का उपयोग करना
रेगेक्स कई प्रोग्रामिंग भाषाओं में समर्थित है, अक्सर सिंटैक्स और क्षमताओं में थोड़े बदलाव के साथ। यहाँ पायथन और जावास्क्रिप्ट में उदाहरण दिए गए हैं:
पायथन उदाहरण
import re
# Match a word followed by the same word
pattern = r'(\b\w+)\s+\1'
text = 'hello hello world'
match = re.search(pattern, text)
if match:
print('Match found:', match.group())
else:
print('No match found')
जावास्क्रिप्ट उदाहरण
// Match a word followed by the same word
const pattern = /(\b\w+)\s+\1/;
const text = 'hello hello world';
const match = text.match(pattern);
if (match) {
console.log('Match found:', match[0]);
} else {
console.log('No match found');
}
निष्कर्ष
लुकअराउंड एश्योरेंस, एटॉमिक ग्रुप, बैकरेफरेंस, नामित समूह और रिकर्सिव पैटर्न जैसी उन्नत रेगेक्स अवधारणाएँ आपकी टेक्स्ट प्रोसेसिंग क्षमताओं को महत्वपूर्ण रूप से बढ़ा सकती हैं। इन तकनीकों में महारत हासिल करके, आप जटिल मिलान और हेरफेर कार्यों को अधिक दक्षता और सटीकता के साथ निपटा सकते हैं।