Go में नियमित अभिव्यक्तियाँ उदाहरणों के साथ: व्यवहार में

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go में नियमित अभिव्यक्तियाँ उदाहरणों के साथ: व्यवहार में

\n\n

नियमित अभिव्यक्तियाँ (regex) पैटर्न के अनुसार टेक्स्ट खोजने, निकालने और बदलने के लिए एक शक्तिशाली उपकरण हैं। Go (Golang) में इनके साथ काम करने के लिए मानक पैकेज regexp का उपयोग किया जाता है, जो एक कुशल और सुरक्षित API प्रदान करता है। इस लेख में, हम विशिष्ट उदाहरणों के साथ पैकेज की मुख्य क्षमताओं का विश्लेषण करेंगे, जो आपको वास्तविक परियोजनाओं में तुरंत ज्ञान लागू करने में मदद करेंगे।

\n\n

Go में regexp पैकेज की मूल बातें

\n\n

पैकेज regexp RE2 के अनुकूल नियमित अभिव्यक्तियों के सिंटैक्स को लागू करता है (बैकरेफरेंस और lookahead/lookbehind को छोड़कर)। यह इसे तेज़ और पूर्वानुमानित बनाता है। मुख्य कार्य:

\n\n
    \n
  • regexp.Compile(pattern) — पैटर्न को Regexp ऑब्जेक्ट में संकलित करता है। यदि पैटर्न गलत है तो त्रुटि लौटाता है।
  • \n
  • regexp.MustCompile(pattern) — वही, लेकिन त्रुटि पर पैनिक कॉल करता है। स्थिर पैटर्न के लिए सुविधाजनक।
  • \n
  • MatchString(pattern, s) — जाँचता है कि स्ट्रिंग s में पैटर्न से मेल खाने वाला सबस्ट्रिंग है या नहीं।
  • \n
\n\n

गतिशील पैटर्न (जैसे, उपयोगकर्ता इनपुट से) के लिए हमेशा Compile का उपयोग करें और कोड में हार्डकोडेड पैटर्न के लिए MustCompile का उपयोग करें।

\n\n
package main\n\nimport (\n    "fmt"\n    "regexp"\n)\n\nfunc main() {\n    // स्थिर पैटर्न के लिए MustCompile का उपयोग करें\n    re := regexp.MustCompile(`hello`)\n    match := re.MatchString("hello world")\n    fmt.Println(match) // true\n\n    // गतिशील पैटर्न के लिए Compile\n    pattern := "[0-9]+"\n    re2, err := regexp.Compile(pattern)\n    if err != nil {\n        fmt.Println("संकलन त्रुटि:", err)\n        return\n    }\n    fmt.Println(re2.MatchString("abc123")) // true\n}\n
\n\n

डेटा खोजना और निकालना

\n\n

अक्सर केवल मिलान की जाँच करने के बजाय स्ट्रिंग के विशिष्ट भागों को निकालने की आवश्यकता होती है। इसके लिए FindString, FindStringSubmatch और FindAllString विधियों का उपयोग किया जाता है।

\n\n

पहला मिलान निकालना

\n\n
package main\n\nimport (\n    "fmt"\n    "regexp"\n)\n\nfunc main() {\n    re := regexp.MustCompile(`\\d+`)\n    text := "कोड: 12345, मूल्य: 678"\n    \n    // पहला मिलान\n    first := re.FindString(text)\n    fmt.Println(first) // 12345\n    \n    // सभी मिलान\n    all := re.FindAllString(text, -1)\n    fmt.Println(all) // [12345 678]\n}\n
\n\n

समूह निकालना (submatches)

\n\n

पैटर्न में समूह (गोल कोष्ठक द्वारा निरूपित) मिलान के भागों को निकालने की अनुमति देते हैं। FindStringSubmatch विधि एक स्लाइस लौटाती है, जहाँ पहला तत्व पूर्ण मिलान है, और बाद के तत्व समूहों के मान हैं।

\n\n
package main\n\nimport (\n    "fmt"\n    "regexp"\n)\n\nfunc main() {\n    // पैटर्न: उपयोगकर्ता नाम @डोमेन\n    re := regexp.MustCompile(`(\\w+)@(\\w+\\.\\w+)`)\n    email := "user@example.com"\n    \n    match := re.FindStringSubmatch(email)\n    if len(match) > 0 {\n        fmt.Println("पूरा ईमेल:", match[0]) // user@example.com\n        fmt.Println("उपयोगकर्ता नाम:", match[1]) // user\n        fmt.Println("डोमेन:", match[2]) // example.com\n    }\n}\n
\n\n

FindAllStringSubmatch विधि स्ट्रिंग में सभी मिलानों के लिए ऐसा ही करती है।

\n\n

नियमित अभिव्यक्तियों के साथ टेक्स्ट बदलना

\n\n

पैकेज regexp प्रतिस्थापन के लिए दो विधियाँ प्रदान करता है: ReplaceAllString (सरल प्रतिस्थापन) और ReplaceAllStringFunc (फ़ंक्शन का उपयोग करके प्रतिस्थापन)।

\n\n

सरल प्रतिस्थापन

\n\n
package main\n\nimport (\n    "fmt"\n    "regexp"\n)\n\nfunc main() {\n    re := regexp.MustCompile(`\\s+`) // एक या अधिक रिक्त स्थान\n    text := "Hello    World   Go"\n    \n    result := re.ReplaceAllString(text, " ")\n    fmt.Println(result) // Hello World Go\n}\n
\n\n

समूहों के साथ प्रतिस्थापन

\n\n

प्रतिस्थापन स्ट्रिंग में संदर्भित किया जा सकता है

ब्लॉग

पुस्तक अनुशंसाएँ