दिलचस्प पोस्ट
क्या मैं किसी सी # विशेषता को एक अरैरे या अन्य चर संख्याओं के साथ आरंभ कर सकता हूं? जावास्क्रिप्ट में शैल कमांड को कैसे कार्यान्वित करें मैं मोज़िला फ़ायरफ़ॉक्स 3 पर जावास्क्रिप्ट के साथ एक विंडो कैसे बंद कर सकता / सकती हूं? Object.getOwnPropertyNames बनाम ऑब्जेक्ट। कीज़ जब एक ही कोड कहीं और काम करता है तो शैल लिपि वाक्यविन्यास त्रुटियाँ क्यों दे रहा है? कैसे एक ही फैशन में दो ArrayLists यादृच्छिक? एंड्रॉइड एप्लिकेशन को कैसे पूरा करें? पायथन में पियरसन सहसंबंध और महत्व की गणना करना मोबाइल उपकरणों पर सीएसएस होवर काम करता है? ThreadPool.QueueUserWorkItem बनाम कार्य। फ़ैक्टरी। स्टार्ट न्यू SQL या TSQL ट्यूरिंग पूर्ण है? ऑफसेटहाइट और क्लाइंट के बीच का अंतर हाईईट MVC पर कई रिश्ते डेटा को सहेजना दृश्य को देखें वक्र पर सबसे अच्छा व्यापार बंद बिंदु ढूँढना व्युत्पन्न वर्ग, बेस वर्ग की निजी विधि को कैसे लागू कर सकता है?

वर्ग कोष्ठक के बीच पाठ को निकालने के लिए नियमित अभिव्यक्ति

सरल regex सवाल मेरे पास निम्न प्रारूप पर एक स्ट्रिंग है:

this is a [sample] string with [some] special words. [another one] 

वर्ग कोष्ठक के भीतर शब्दों को निकालने के लिए नियमित अभिव्यक्ति क्या है, यानी

 sample some another one 

नोट: मेरे उपयोग के मामले में, कोष्ठक नेस्टेड नहीं किया जा सकता है।

वेब के समाधान से एकत्रित समाधान "वर्ग कोष्ठक के बीच पाठ को निकालने के लिए नियमित अभिव्यक्ति"

आप वैश्विक स्तर पर निम्नलिखित regex का उपयोग कर सकते हैं:

 \[(.*?)\] 

स्पष्टीकरण:

  • \[ : [ एक मेटा वर्ण है और बचने की जरूरत है अगर आप इसे शाब्दिक रूप से मैच करना चाहते हैं
  • (.*?) : एक गैर-लालची रास्ते में सब कुछ मैच और इसे कब्जा।
  • \] : ] एक मेटा वर्ण है और बचने की जरूरत है अगर आप इसे सचमुच मैच करना चाहते हैं

इसे ठीक से काम करना चाहिए:

 \[([^]]+)\] 

ब्रैकेट्स नेस्टेड हो सकते हैं?

यदि नहीं: \[([^]]+)\] स्क्वेयर ब्रैकेट सहित एक आइटम से मेल खाती है। Backreference \1 में आइटम मैच होना चाहिए। यदि आपका रीजक्स स्वाद लुकअराउंड का समर्थन करता है, तो उपयोग करें

 (?<=\[)[^]]+(?=\]) 

यह केवल आइटम कोष्ठक के अंदर ही मैच करेगा।

 (?<=\[).+?(?=\]) 

ब्रैकेट के बिना सामग्री पर कब्जा होगा

(? <= [] – सकारात्मक देखने के लिए [

। *? – सामग्री के लिए गैर लालची मैच

(? =]) – के लिए सकारात्मक lookahead [

संपादित करें: नेस्टेड ब्रैकेट के लिए नीचे दिए गए रेगेक्स को काम करना चाहिए:

 (\[(?:\[??[^\[]*?\])) 

(?<=\().*?(?=\)) ऊपर दिए गए स्पष्टीकरण के अनुसार अच्छा काम करता है। यहां एक पायथन उदाहरण है:

 import re str = "Pagination.go('formPagination_bottom',2,'Page',true,'1',null,'2013')" re.search('(?<=\().*?(?=\))', str).group() "'formPagination_bottom',2,'Page',true,'1',null,'2013'" 

यह कोड वर्ग कोष्ठकों और कोष्ठकों के बीच की सामग्री को निकाल देगा

 (?:(?<=\().+?(?=\))|(?<=\[).+?(?=\])) (?: non capturing group (?<=\().+?(?=\)) positive lookbehind and lookahead to extract the text between parentheses | or (?<=\[).+?(?=\]) positive lookbehind and lookahead to extract the text between square brackets 
 ([[][az \s]+[]]) 

ऊपर दिए गए व्याख्यान दिए जाने पर ऊपर काम करना चाहिए

  • वर्ग कोष्ठक के भीतर वर्ण [] विशेषता वर्ग को परिभाषित करता है, जिसका अर्थ है कि पैटर्न को कम से कम एक वर्ग के वर्ग के भीतर वर्णित किया जाना चाहिए

  • \ s एक स्थान निर्दिष्ट करता है

  • + पहले से वर्णित चरित्र में से कम से कम एक +