दिलचस्प पोस्ट
कैसे पता कैसे एक स्तंभ SQL सर्वर तालिका में मौजूद है क्या आईफोन ओरिएंटेशन सेट करने का एक दस्तावेज तरीका है? उपयोगकर्ता द्वारा पुश नोटिफिकेशन सक्षम किए जाने पर iPhone पर निर्धारित करें सीएसएस एक्सेस करें: "बाद में" jQuery के साथ चयनकर्ता `Void_t` काम कैसे करता है HTML तालिका के लिए JSON वस्तुओं को पार्स करना आप सी में समानता के लिए स्ट्रैक्ट की तुलना कैसे करते हैं? NHibernate AliasToBean ट्रांसफॉर्मर एसोसिएशन आईओएस HTTP पोस्ट का उपयोग छवि और पाठ अपलोड करें CSS3 क्रॉस ब्राउज़र रैखिक ढाल जेपीए के साथ आरक्षित शब्द नाम के साथ फ़ील्ड बनाना पीएचपी का इस्तेमाल करते हुए एक ज़िप फ़ाइल के रूप में कई फाइलें डाउनलोड करें push_back बनाम emplace_back अनंत रिकर्सन के बिना मैं '==' ऑपरेटर ओवरलोड में नल के लिए कैसे जांचूं? WOFF फोंट के लिए माइम प्रकार?

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

सरल 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 एक स्थान निर्दिष्ट करता है

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