2012-06-13 11 views
8

संभव डुप्लिकेट:
Regular Expression to find a string included between two characters, while EXCLUDING the delimitersRegEx वर्ग कोष्ठकों में से पाठ प्राप्त करने के लिए

मैं एक समारोह मैं कहाँ पाठ जिसके लिए वर्गाकार कोष्ठक में लेकिन कोष्ठक नहीं है प्राप्त करने के लिए है उदाहरण

this is [test] line i [want] text [inside] square [brackets] 

उपर्युक्त रेखा से मैं

चाहता हूं

परीक्षण

चाहते

कोष्ठक

मैं /\[(.*?)\]/g के साथ ऐसा करने के साथ कोशिश कर रहा हूँ, लेकिन मैं अंदर संतुष्ट परिणाम नहीं मिल रहा है मैं कोष्ठकों में शब्द, लेकिन यह भी कोष्ठक हैं जो मिलता है मैं नहीं चाहता कि

मैंने SO पर कुछ समान प्रकार के प्रश्नों की खोज की लेकिन उनमें से कोई भी समाधान ठीक से काम नहीं करता है मुझे यहां एक (?<=\[)[^]]+(?=\]) मिला है जो यह RegEx कोच में काम करता है लेकिन जावास्क्रिप्ट के साथ नहीं। यहाँ refrence से जहां मैं इस

यहाँ मिल गया मुझे ऐसा क्या किया है अब तक demo

कृपया मदद

+0

अपने सटीक डुप्लिकेट एक सामान्य चरित्र में स्क्वायर ब्रैकेट को अलग-अलग निपटाया जाना चाहिए तो अन्य पात्र – sohaan

उत्तर

22

एक एकल अग्रदर्शी यहाँ चाल करना चाहिए:

a = "this is [test] line i [want] text [inside] square [brackets]" 
words = a.match(/[^[\]]+(?=])/g) 

लेकिन एक सामान्य मामले में, exec या replace आधारित छोरों सरल कोड के लिए नेतृत्व:

words = [] 
a.replace(/\[(.+?)\]/g, function($0, $1) { words.push($1) }) 
+0

पुनरावृत्त करने के लिए underscore.js के _each() फ़ंक्शन का उपयोग करें आगे बढ़ने वाले रेगेक्स को सरल नहीं बनाया जा सकता है?/[^ \ [\]] + (? = \])/जी – Jules

+0

@ जुल्स: अच्छा सुझाव, धन्यवाद। – georg

5

This fiddle का उपयोग करता RegExp.exec और आउटपुट केवल क्या कोष्टक अंदर किया जाता है।

var data = "this is [test] line i [want] text [inside] square [brackets]" 
var re= /\[(.*?)\]/g; 
for(m = re.exec(data); m; m = re.exec(data)){ 
    alert(m[1]) 
} 
+0

सर क्या आप कृपया मुझे बता सकते हैं कि लूप के लिए क्या हो रहा है और क्या हम – sohaan

संबंधित मुद्दे