दिलचस्प पोस्ट
जावास्क्रिप्ट से एक्सीलरोमीटर / जीरोस्कोप डेटा तक कैसे पहुंचें? यूज़रनेम और पासवर्ड के साथ पोस्ट अनुरोध भेजना और सत्र कुकी को बचाने के लिए डेटा लोड होने के बाद jqgrid की कॉलम की चौड़ाई कैसे समायोजित करें? एक्शन बार पर शीर्षक के पाठ का आकार कैसे बदल सकता है? अतिरिक्त अनुरोध भेजने वाले क्रोम के साथ क्या करना है? दो ActiveRecord :: रिलेशंस ऑब्जेक्ट्स को मिलाएं PHP के साथ एक बयान में एकाधिक SQL क्वेरी निष्पादित करना JQuery Select2 का उपयोग करके ड्रॉपडाउन साफ़ करें एफटीएमपीईजीई लाइब्रेरी का उपयोग करते हुए RTSP स्ट्रीम प्राप्त करना Jqgrid में स्थानीय डेटा के साथ पंक्तियों को कैसे हटाएं जावा में डॉक या डॉक फाइल कैसे पढ़ी? संदर्भित DLL को लोड करने के लिए कौन से स्थान खोजे गए हैं? Linux में निष्पादन योग्य द्वारा उपयोग किए गए सभी साझा लाइब्रेरी कैसे दिखाएं? विंडोज और फ़ोल्डर्स का नाम बदला, 'कॉन' मुद्दा जावा में कीप्रेस को सुनने के दौरान छवि को कैसे स्थानांतरित किया जाए

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

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

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

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

 sample some another one 

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

Solutions Collecting From Web of "वर्ग कोष्ठक के बीच पाठ को निकालने के लिए नियमित अभिव्यक्ति"

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

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