जटिल नियमित अभिव्यक्तियों में निपुणता

रेगुलर एक्सप्रेशन (रेगेक्स) पैटर्न मिलान और टेक्स्ट हेरफेर के लिए बहुमुखी उपकरण हैं। यह ट्यूटोरियल उन्नत रेगेक्स तकनीकों की खोज करता है जो आपको जटिल टेक्स्ट-प्रोसेसिंग परिदृश्यों को अधिक प्रभावी ढंग से प्रबंधित करने में मदद करते हैं।

पीछे की ओर देखें दावे

लुकबिहाइंड एश्योरेंस आपको किसी पैटर्न का मिलान तभी करने देता है जब उसके पहले कोई दूसरा पैटर्न हो। यह मिलान में संदर्भ को शामिल किए बिना सुनिश्चित करने के लिए उपयोगी है।

  • सकारात्मक लुकबिहाइंड (?<=...): पैटर्न से केवल तभी मेल खाता है जब उसके पहले निर्दिष्ट अभिव्यक्ति हो।
  • नकारात्मक लुकबिहाइंड (?<!...): पैटर्न से केवल तभी मेल खाता है जब उसके पहले निर्दिष्ट अभिव्यक्ति न हो।

उदाहरण:

(?<=Mr\.|Mrs\.)\s[A-Z]\w+

यह रेगेक्स उन नामों से मेल खाता है जिनके पहले "Mr." या "Mrs." आता है।

सशर्त पैटर्न

सशर्त पैटर्न आपको किसी निश्चित शर्त के पूरा होने के आधार पर अलग-अलग पैटर्न का मिलान करने की अनुमति देते हैं। इसका सिंटैक्स (?(condition)true-pattern|false-pattern) है।

उदाहरण:

(\d{3}-)?\d{3}-\d{4}

यह रेगेक्स क्षेत्र कोड के साथ या उसके बिना फोन नंबरों का मिलान करता है।

सबरूटीन्स और रिकर्सन

सबरूटीन और रिकर्सन आपको उसी रेगेक्स के भीतर पैटर्न का पुनः उपयोग करने या नेस्टेड संरचनाओं से मिलान करने में सक्षम बनाते हैं। यह विशेष रूप से जटिल और नेस्टेड डेटा के लिए उपयोगी है।

उदाहरण:

(?<group>\((?>[^()]+|(?&group))*\))

यह रेगेक्स संतुलित कोष्ठकों को नेस्टेड स्तरों से मेल खाता है।

अधिकारपूर्ण परिमाणक

अधिकारपूर्ण क्वांटिफायर रेगेक्स इंजन को बैकट्रैकिंग से रोकते हैं, जिससे प्रदर्शन में सुधार हो सकता है, जब आप यह सुनिश्चित करना चाहते हैं कि कोई बैकट्रैकिंग न हो।

उदाहरण:

\w++

यह रेगेक्स शब्द वर्णों के अनुक्रम का स्वामित्वपूर्वक मिलान करता है, जिसका अर्थ है कि एक बार मिलान हो जाने पर यह वर्णों को नहीं छोड़ेगा।

बेहतर मिलान के लिए झंडों का उपयोग करना

रेगेक्स फ़्लैग पैटर्न मिलान के व्यवहार को संशोधित करते हैं। कुछ सामान्य फ़्लैग में शामिल हैं:

  • 'i': केस-असंवेदनशील मिलान.
  • 'm': बहुपंक्ति मोड, ^ और $ के व्यवहार को प्रभावित करता है।
  • 's': डॉटऑल मोड, . को नई लाइन वर्णों से मिलान करने की अनुमति देता है।
  • '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));
}

निष्कर्ष

लुकबिहाइंड एश्योरेंस, कंडीशनल पैटर्न, सबरूटीन, रिकर्सन और पॉज़िटिव क्वांटिफ़ायर जैसी उन्नत रेगेक्स तकनीकें जटिल टेक्स्ट प्रोसेसिंग के लिए रेगेक्स की क्षमताओं का विस्तार करती हैं। इन अवधारणाओं में महारत हासिल करने से आप अधिक दक्षता और सटीकता के साथ परिष्कृत मिलान और हेरफेर कार्यों को संभालने में सक्षम हो जाते हैं।