javascript - regular expression repeating subexpression -


मेरे पास निम्न पाठ है

  & lt; pattern name = "pattern1" / & gt; & Lt; सफलता & gt; सफलता का मामला 1 & lt; / सफलता & gt; & LT; विफल रहा है & gt; विफलता 1 & lt; / विफल & gt; & LT; विफल रहा है & gt; विफलता 2 & lt; / विफल & gt; & Lt; अज्ञात & gt; अज्ञात & lt; / अज्ञात & gt; & Lt; पैटर्न का नाम = "पैटर्न 4" / & gt; & Lt; पैटर्न का नाम = "पैटर्न 5" / & gt; & Lt; सफलता & gt; सफलता का मामला 3 & lt; / सफलता & gt; & Lt; पैटर्न का नाम = "पैटर्न 2" / & gt; & Lt; सफलता & gt; सफलता का मामला 2 & lt; / सफलता & gt; & Lt; अन्यटैग & gt; कई अन्य टैग हैं। & Lt; / otherTag & gt; & LT; विफल रहा है & gt; विफलता 3 & lt; / विफल & gt; & Lt; पैटर्न का नाम = "पैटर्न 3" / & gt; & Lt; अज्ञात & gt; अज्ञात & lt; / अज्ञात & gt;  

और नियमित अभिव्यक्ति & lt; विफल & gt; [\ w | \ W] *? & Lt; / विफल & gt; से मेल खाने वाली सभी पंक्तियों में विफल टैग है

मुझे क्या करना चाहिए अगर मैं असफल टैग के ऊपर सभी असफल टैग और पैटर्न टैग चाहता हूं। अगर कोई पैटर्न टैग के नीचे कोई असफल टैग नहीं है, तो पैटर्न टैग का मिलान नहीं किया जाना चाहिए? असल में, मैं निम्नलिखित आउटपुट चाहता हूं:

  & lt; pattern name = "pattern1" / & gt; & LT; विफल रहा है & gt; विफलता 1 & lt; / विफल & gt; & LT; विफल रहा है & gt; विफलता 2 & lt; / विफल & gt; & Lt; पैटर्न का नाम = "पैटर्न 2" / & gt; & LT; विफल रहा है & gt; विफलता 3 & lt; / विफल & gt;  

मैं यह जावास्क्रिप्ट में कर रहा हूं, मुझे कुछ मध्यवर्ती चरणों को करने का मन नहीं है।

संपादन प्रारंभ लगभग सभी रिपेलियर्स मुझे एक अलग दृष्टिकोण लेने का सुझाव देते हैं I मुझे यकीन नहीं है कि मुझे कौन-सी दृष्टिकोण चाहिए। JQuery, regex या अन्य। बेहतर निर्णय लेने के लिए मैं यहां अधिक जानकारी दे रहा हूं। डेटा प्रारूप बदल जाएगा, लेकिन अक्सर बदल नहीं होगा। डेटा फ़ाइल प्रकार ".SVRL" की एक schematron सत्यापन रिपोर्ट से है फ़ाइल की संरचना में ""

  schematron-output = element schematron-output {attribute title {Text}?, विशेषता चरण {xsd: NMTOKEN}?, विशेषता स्कीमा विर्सन {टेक्स्ट}?, मानव-पाठ *, एनएस-उपसर्ग-इन-विशेषता-मान *, (सक्रिय-पैटर्न, (निकाल-नियम, सक्रिय-प्रतिमान के लिए नक्शे, और असफल-आकांक्षा और सफल-रिपोर्ट के क्रम में क्रमशः मैप्स।)  

अब अतिरिक्त जानकारी के साथ, मुझे कौन सी दृष्टिकोण चाहिए? मदद करने के लिए बहुत बहुत धन्यवाद :)

संपादन का अंत

यहां आपको RegExp की आवश्यकता है:

  & lt; (पैटर्न | विफल) \ b [^ & gt;] * (?: /> | & Gt; [^ & lt;] * & Lt; / 1 & gt;)  

जावास्क्रिप्ट नियमित अभिव्यक्ति नोटेशन में उपयोग करते समय बस स्लैश से बचें:

  var regExp = / & lt; (pattern | विफल) \ b [^ & gt;] * (: \ / & gt; | & gt; [^ & LT;] * & LT; \ / \ 1 & gt;) / गी; Var मैचोंअरे = testString.match (regExp);  

यह नियमित अभिव्यक्ति संपूर्ण & lt; pattern & gt; और & lt; विफल & gt; टैग, या तो अगर वे खाली टैग हैं या नहीं (& lt; खाली / & gt; या & lt; notEmpty & gt; & lt; / notEmpty & gt;)। यह संभव तत्व विशेषताओं को भी मानता है।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -