GO में दोहराए जाने वाले समूहों को कैप्चर करना
जब एक विशिष्ट प्रारूप का पालन करने वाले स्ट्रिंग्स को पार्स करने का प्रयास किया जाता है, जैसे अपरकेस शब्द जिसके बाद शून्य या अधिक डबल होता है -उद्धृत तर्कों के लिए, एक नियमित अभिव्यक्ति को परिभाषित करना आवश्यक है जो वांछित तत्वों को कैप्चर करता है। प्रदान किए गए परिदृश्य में, निम्नलिखित नियमित अभिव्यक्ति का उपयोग करके दोहराए जाने वाले तर्कों को पकड़ने का प्रयास:
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
सभी तर्कों को सही ढंग से पकड़ने में विफल। इस समस्या को हल करने के लिए, एक संशोधित नियमित अभिव्यक्ति प्रस्तावित है:
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
यह संशोधित नियमित अभिव्यक्ति आसपास के उद्धरणों को कैप्चर किए बिना या तो एक बड़े शब्द या डबल-उद्धृत स्ट्रिंग से मेल खाती है। यह दृष्टिकोण दोहराए जाने वाले तर्कों को बेहतर ढंग से पकड़ने की अनुमति देता है, जैसा कि निम्नलिखित कोड स्निपेट में दिखाया गया है:
results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1) fmt.Println("Command:", results[0][1]) for _, arg := range results[1:] { fmt.Println("Arg:", arg[2]) }
यह संशोधित दृष्टिकोण कमांड और उसके तीन तर्कों को सफलतापूर्वक कैप्चर करता है और उन्हें अलग से प्रिंट करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3