रिकर्सन या बैलेंसिंग ग्रुप के बिना नेस्टेड ब्रैकेट्स का मिलान
नियमित अभिव्यक्तियों का उपयोग करके नेस्टेड ब्रैकेट्स का मिलान चुनौतीपूर्ण साबित हो सकता है, खासकर जावा जैसी भाषाओं में, जहां रिकर्सन और संतुलन समूह समर्थित नहीं हैं. सौभाग्य से, आगे के संदर्भों का उपयोग करके इस सीमा को पार करना वास्तव में संभव है।
बाहरी समूहों का मिलान
निम्नलिखित रेगेक्स [1] गहराई पर सीमा लगाए बिना कोष्ठक:
(?=\()(?:(?=.*?\((?!.*?\1)(.*\)(?!.*\2).*))(?=.*?\)(?!.*?\2)(.*)).) ?.*?(?=\1)[^(]*(?=\2$)
यहाँ, अभिव्यक्ति बेजोड़ शुरुआती कोष्ठकों को छोड़कर, शुरुआती कोष्ठकों को देखती है, और संबंधित समापन कोष्ठकों को कैप्चर करती है, हालांकि बेकार, मैच को पूरा करने के लिए प्लेसहोल्डर के रूप में काम करती है।
आंतरिक समूहों का मिलान
आंतरिक समूहों को शामिल करने के लिए, हम निम्नलिखित अभिव्यक्ति को कैप्चर कर सकते हैं [2]:
(?=\()(?=((?:(?=.*?\((?!.*?\2)(.*\)(?!.*\3).*))(?=.*?\)(?!.*?\3)(.*)).) ?.*?(?=\2)[^(]*(?=\3$)))
एक कैप्चरिंग ग्रुप जोड़कर और बैकरेफरेंस सूचकांकों को समायोजित करते हुए, यह अभिव्यक्ति आंतरिक समूहों को भी कैप्चर करती है। प्रत्येक मामले में शेष स्ट्रिंग को कैप्चर करना। लुकहेड्स यह सुनिश्चित करते हैं कि कोष्ठक संतुलित तरीके से मेल खाते हैं। ]
(?=()दावा करता है कि '(' जटिल पार्सिंग से पहले होता है
बार-बार स्ट्रिंग प्रसंस्करण के लिए गैर-कैप्चरिंग समूह की शुरुआत | |
---|---|
. | ?((?!.|
अगले '(' के बाद समूह 1 नहीं आने तक मिलान करें | |
\2).* | समूह 1 को स्ट्रिंग से भरें, सुनिश्चित करें कि एक और ')' मौजूद है |
)जोर दें कि मिलान ')' वैध है | |
?\2)यह दावा करें कि समूह 2 के बाद अगला ')' मौजूद नहीं है | |
समूह 2 को शेष स्ट्रिंग से भरें | |
जोर दें कि मिलान ')' मान्य है | |
) ? | |
.*?(?=\ 1) | |
*(?=\2 $) | अंतिम तक मिलान करें ')' (लेकिन वैध समूह के भीतर) |
यह विधि आवश्यकता के बिना नेस्टेड ब्रैकेट के कुशल मिलान की अनुमति देती है प्रत्यावर्तन या संतुलन समूहों के लिए। |
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3