"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में एकाधिक उद्धृत समूहों को कैसे कैप्चर करें: एक रेगेक्स समाधान

गो में एकाधिक उद्धृत समूहों को कैसे कैप्चर करें: एक रेगेक्स समाधान

2024-11-07 को प्रकाशित
ब्राउज़ करें:796

How to Capture Multiple Quoted Groups in Go: A Regex Solution

गो में एकाधिक उद्धृत समूहों को कैप्चर करना

यह आलेख एक विशिष्ट प्रारूप का पालन करने वाली स्ट्रिंग्स को पार्स करने की चुनौती को संबोधित करता है: वैकल्पिक के बाद एक अपरकेस कमांड उद्धृत तर्क. लक्ष्य कमांड और तर्क दोनों को अलग-अलग स्ट्रिंग के रूप में निकालना है।

इस कार्य को संभालने के लिए, एक नियमित अभिव्यक्ति नियोजित है: re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*). पहला कैप्चरिंग ग्रुप ([A-Z] ) अपरकेस कमांड से मेल खाता है, जबकि दूसरा कैप्चरिंग ग्रुप (?: "([^"] )")* शून्य या अधिक उद्धृत तर्कों से मेल खाता है।

हालाँकि, प्रदान किया गया कोड केवल अंतिम तर्क को कैप्चर करता है। इस समस्या को हल करने के लिए, एक अधिक आरामदायक रेगेक्स का सुझाव दिया गया है: re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )"))। यह रेगेक्स किसी आदेश या तर्क की अनुमति देने के लिए यूनियन | का उपयोग करता है।

कोड को संशोधित करके:

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])
}

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


  1. "
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3