रेगुलर एक्सप्रेशन का उपयोग करना

Go:
रेगुलर एक्सप्रेशन का उपयोग करना

कैसे:

Go में, regexp पैकेज regex कार्यक्षमता प्रदान करता है। इसका प्रयोग कैसे करें, इस पर एक कदम-दर-कदम मार्गदर्शिका यहाँ प्रस्तुत है:

  1. नियमित अभिव्यक्ति का संकलन

सबसे पहले, अपने regex पैटर्न को regexp.Compile का प्रयोग करके संकलित करें। संकलन के दौरान उत्पन्न हो सकने वाली त्रुटियों को संभालना एक अच्छी प्रथा है।

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := "go+"
    r, err := regexp.Compile(pattern)
    if err != nil {
        fmt.Println("Regex संकलन में त्रुटि:", err)
        return
    }
    
    fmt.Println("Regex सफलतापूर्वक संकलित की गई")
}
  1. स्ट्रिंग्स का मिलान

MatchString मेथड का प्रयोग करके जाँचें कि क्या एक स्ट्रिंग पैटर्न से मेल खाती है।

matched := r.MatchString("goooooogle")
fmt.Println("मिलान हुआ:", matched) // आउटपुट: मिलान हुआ: true
  1. मैचेस का पता लगाना

पहला मैच खोजने के लिए, FindString मेथड का प्रयोग करें।

match := r.FindString("golang gooooo")
fmt.Println("पाया गया:", match) // आउटपुट: पाया गया: gooooo
  1. सभी मैचेस का पता लगाना

सभी मैचों के लिए, FindAllString एक इनपुट स्ट्रिंग और एक पूर्णांक n लेता है। यदि n >= 0 है, तो यह अधिकतम n मैचों को लौटाता है; यदि n < 0 है, तो यह सभी मैचों को लौटाता है।

matches := r.FindAllString("go gooo gooooo", -1)
fmt.Println("सभी मैचेस:", matches) // आउटपुट: सभी मैचेस: [go gooo gooooo]
  1. मैचेस का प्रतिस्थापन

मैचों को किसी अन्य स्ट्रिंग से प्रतिस्थापित करने के लिए, ReplaceAllString काम में आता है।

result := r.ReplaceAllString("go gooo gooooo", "Java")
fmt.Println("प्रतिस्थापित:", result) // आउटपुट: प्रतिस्थापित: Java Java Java

गहन विवरण

Go की स्टैंडर्ड लाइब्रेरी में पेश किया गया, regexp पैकेज Perl के सिंटैक्स से प्रेरित नियमित अभिव्यक्ति खोज और पैटर्न मिलान को लागू करता है। अंतरिक्ष में, Go का regex इंजन पैटर्न्स को एक प्रकार के बाइटकोड्स में संकलित करता है, जिसे फिर Go स्वयं द्वारा लिखित एक मिलान इंजन द्वारा क्रियान्वित किया जाता है। यह कार्यान्वयन सुरक्षा और प्रयोग में आसानी के लिए सीधे हार्डवेयर क्रियान्वयन में पाई जाने वाली कुछ गति का त्याग करता है, सी-आधारित लाइब्रेरियों में आम बफ़र ओवररन्स के जोखिमों से बचता है।

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