Go (Golang) में नियमित अभिव्यक्तियाँ: शुरुआती लोगों के लिए पूर्ण गाइड
\n\nनियमित अभिव्यक्तियाँ (regex) दिए गए पैटर्न के अनुसार टेक्स्ट खोजने, निकालने और बदलने के लिए एक शक्तिशाली उपकरण हैं। Go (Golang) भाषा में, नियमित अभिव्यक्तियों के साथ काम मानक पैकेज regexp के माध्यम से कार्यान्वित किया जाता है। इस लेख में, हम Go में regexp के साथ काम करने की मूल बातें समझेंगे, प्रमुख कार्यों पर विचार करेंगे और व्यावहारिक उदाहरण देंगे जो आपको अपने प्रोजेक्ट्स में नियमित अभिव्यक्तियों का उपयोग शुरू करने में मदद करेंगे।
नियमित अभिव्यक्तियाँ क्या हैं और Go में इनकी आवश्यकता क्यों है?
\n\nनियमित अभिव्यक्ति वर्णों का एक क्रम है जो टेक्स्ट में खोजने के लिए एक पैटर्न निर्दिष्ट करता है। उदाहरण के लिए, आप जांच सकते हैं कि क्या स्ट्रिंग में ईमेल, फ़ोन नंबर या डेटा का एक विशिष्ट प्रारूप है। Go में, regexp पैकेज पैटर्न को संकलित करने, मिलान खोजने, टेक्स्ट बदलने और सबस्ट्रिंग निकालने के लिए फ़ंक्शन प्रदान करता है।
regexp की मुख्य क्षमताएँ:
- \n
- खोज — पैटर्न से मेल खाने वाली सबस्ट्रिंग की उपस्थिति की जाँच करना। \n
- निष्कर्षण — सभी मिलान या अलग-अलग समूह प्राप्त करना। \n
- प्रतिस्थापन — मिले हुए टुकड़ों को दूसरे टेक्स्ट से बदलना। \n
- सत्यापन — स्ट्रिंग प्रारूप की जाँच करना (ईमेल, पासवर्ड, URL)। \n
regexp पैकेज की स्थापना और आयात
\n\nregexp पैकेज Go की मानक लाइब्रेरी का हिस्सा है, इसलिए कुछ भी स्थापित करने की आवश्यकता नहीं है। इसका उपयोग करने के लिए, फ़ाइल की शुरुआत में इसे आयात करना पर्याप्त है:
import (\n "fmt"\n "regexp"\n)\n\n1. नियमित अभिव्यक्ति का संकलन: Compile और MustCompile
\n\nनियमित अभिव्यक्तियों के साथ काम करने में पहला कदम पैटर्न का संकलन है। Go में दो मुख्य तरीके हैं:
\n\n- \n
regexp.Compile(expr)— संकलित अभिव्यक्ति और त्रुटि लौटाता है यदि पैटर्न गलत है। \n regexp.MustCompile(expr)— समान है, लेकिन त्रुटि पर panic उत्पन्न करता है। स्थिर पैटर्न के लिए सुविधाजनक। \n
उदाहरण:
\n\npackage main\n\nimport (\n "fmt"\n "regexp"\n)\n\nfunc main() {\n // MustCompile का उपयोग करें, क्योंकि पैटर्न निश्चित रूप से सही है\n re := regexp.MustCompile(`[a-z]+`)\n \n // त्रुटि प्रबंधन के साथ Compile\n re2, err := regexp.Compile(`[0-9]+`)\n if err != nil {\n fmt.Println("संकलन त्रुटि:", err)\n return\n }\n fmt.Println(re, re2)\n}\n\n2. खोज और जाँच के मुख्य तरीके
\n\nसंकलन के बाद, हमारे पास विधियों के एक सेट के साथ *regexp.Regexp ऑब्जेक्ट है। आइए सबसे उपयोगी पर विचार करें।
MatchString — अनुरूपता की जाँच
\nविधि MatchString(s string) bool true लौटाती है यदि स्ट्रिंग में पैटर्न से कम से कम एक मिलान है।
re := regexp.MustCompile(`go`)\nfmt.Println(re.MatchString("golang")) // true\nfmt.Println(re.MatchString("python")) // false\n\nFindString — पहला मिलान खोजें
\nपैटर्न से मेल खाने वाली पहली सबस्ट्रिंग लौटाता है।
\n\nre := regexp.MustCompile(`[0-9]+`)\nfmt.Println(re.FindString("मूल्य: 100 रुपये, छूट 20%")) // "100"\n\nFindAllString — सभी मिलान खोजें
\nसभी मिली स्ट्रिंग्स का एक स्लाइस लौटाता है। दूसरा तर्क मिलानों की अधिकतम संख्या है (-1 — सभी)।
re := regexp.MustCompile(`[0-9]+`)\nresult := re.FindAllString("मूल्य: 100 रुपये, छूट 20%", -1)\nfmt.Println(result) // ["100", "20"]\n\n3. उप-अभिव्यक्तियों के साथ समूह निकालना
\n\nपैटर्न में गोल कोष्ठक कैप्चरिंग ग्रुप बनाते हैं। विधि FindStringSubmatch एक स्लाइस लौटाती है जहाँ पहला तत्व पूर्ण मिलान है और बाद के तत्व समूहों के मान हैं।
re := regexp.MustCompile(`(\\d{4})-(\\d{2})-(\\d{2})`)\ndate := "दिनांक: 2023-12-25"\nmatches := re.FindStringSubmatch(date)\nfmt.Println(matches) // ["2023-12-25", "2023", "12", "25"]