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

क्या नेस्टेड ब्रैकेट का मिलान रिकर्सन या बैलेंसिंग ग्रुप के बिना किया जा सकता है?

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

Can Nested Brackets Be Matched Without Recursion or Balancing Groups?

रिकर्सन या बैलेंसिंग ग्रुप के बिना नेस्टेड ब्रैकेट्स का मिलान

नियमित अभिव्यक्तियों का उपयोग करके नेस्टेड ब्रैकेट्स का मिलान चुनौतीपूर्ण साबित हो सकता है, खासकर जावा जैसी भाषाओं में, जहां रिकर्सन और संतुलन समूह समर्थित नहीं हैं. सौभाग्य से, आगे के संदर्भों का उपयोग करके इस सीमा को पार करना वास्तव में संभव है।

बाहरी समूहों का मिलान

निम्नलिखित रेगेक्स [1] गहराई पर सीमा लगाए बिना कोष्ठक:

(?=\()(?:(?=.*?\((?!.*?\1)(.*\)(?!.*\2).*))(?=.*?\)(?!.*?\2)(.*)).) ?.*?(?=\1)[^(]*(?=\2$)

यहाँ, अभिव्यक्ति बेजोड़ शुरुआती कोष्ठकों को छोड़कर, शुरुआती कोष्ठकों को देखती है, और संबंधित समापन कोष्ठकों को कैप्चर करती है, हालांकि बेकार, मैच को पूरा करने के लिए प्लेसहोल्डर के रूप में काम करती है।

आंतरिक समूहों का मिलान

आंतरिक समूहों को शामिल करने के लिए, हम निम्नलिखित अभिव्यक्ति को कैप्चर कर सकते हैं [2]:

(?=\()(?=((?:(?=.*?\((?!.*?\2)(.*\)(?!.*\3).*))(?=.*?\)(?!.*?\3)(.*)).) ?.*?(?=\2)[^(]*(?=\3$))) 

एक कैप्चरिंग ग्रुप जोड़कर और बैकरेफरेंस सूचकांकों को समायोजित करते हुए, यह अभिव्यक्ति आंतरिक समूहों को भी कैप्चर करती है। प्रत्येक मामले में शेष स्ट्रिंग को कैप्चर करना। लुकहेड्स यह सुनिश्चित करते हैं कि कोष्ठक संतुलित तरीके से मेल खाते हैं। ]

(?=()

दावा करता है कि '(' जटिल पार्सिंग से पहले होता है

(?: (?=जोर दें कि अगला '(' अनुसरण करता है?((?!.?\1)(.)(?!..?)(?!.(.*))अंदर मिलान जारी रखने के लिए एक ही अक्षर का उपयोग करें समूहसमूह को दोहराएं (आंतरिक लूप में)अंतिम '(' से मेल खाता है और इसमें शामिल है1यह विधि आवश्यकता के बिना नेस्टेड ब्रैकेट के कुशल मिलान की अनुमति देती है प्रत्यावर्तन या संतुलन समूहों के लिए।
बार-बार स्ट्रिंग प्रसंस्करण के लिए गैर-कैप्चरिंग समूह की शुरुआत
.
अगले '(' के बाद समूह 1 नहीं आने तक मिलान करें
\2).*समूह 1 को स्ट्रिंग से भरें, सुनिश्चित करें कि एक और ')' मौजूद है
)जोर दें कि मिलान ')' वैध है
?\2)यह दावा करें कि समूह 2 के बाद अगला ')' मौजूद नहीं है
समूह 2 को शेष स्ट्रिंग से भरें
जोर दें कि मिलान ')' मान्य है
) ?
.*?(?=\ 1)
*(?=\2 $)अंतिम तक मिलान करें ')' (लेकिन वैध समूह के भीतर)
विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729740015 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3