У меня есть следующий текст
<pattern name="pattern1"/>
<success>success case 1</success>
<failed> failure 1</failed>
<failed> failure 2</failed>
<unknown> unknown </unknown>
<pattern name="pattern4"/>
<pattern name="pattern5"/>
<success>success case 3</success>
<pattern name="pattern2"/>
<success>success case 2</success>
<otherTag>There are many other tags.</otherTag>
<failed> failure 3</failed>
<pattern name="pattern3"/>
<unknown>unkown</unknown>
И регулярное выражение <failed>[\w|\W]*?</failed>
соответствует всем строкам и содержит ошибочный тег.
Что мне нужно сделать, если я хочу, чтобы все ошибочные теги и тег шаблона были выше неудачного тега. если под тегом шаблона нет сбойного тега, то тег шаблона не должен совпадать?
В основном, я хочу следующий вывод:
<pattern name="pattern1"/>
<failed> failure 1</failed>
<failed> failure 2</failed>
<pattern name="pattern2"/>
<failed> failure 3</failed>
Я делаю это в javascript, я не против сделать некоторые промежуточные шаги.
редактировать начало
Почти все респонденты предлагают мне другой подход. Я не уверен, какой подход я должен использовать. JQuery, регулярное выражение или другие. Я даю больше информации здесь для лучшего принятия решений.
Формат данных будет меняться, но не будет часто меняться. Данные взяты из отчета о проверке схематрона типа файла ".SVRL". Структура файла имеет следующую схему, определенную с использованием " компактный синтаксис RELAX NG "
schematron-output = element schematron-output {
attribute title { text }?,
attribute phase { xsd:NMTOKEN }?,
attribute schemaVersion { text }?,
human-text*,
ns-prefix-in-attribute-values*,
(active-pattern,
(fired-rule, (failed-assert | successful-report)*)+)+
}
сопоставляет с активным шаблоном и соответствует отчетам о неудачных утверждениях и успешных отчетах соответственно.
Теперь с дополнительной информацией, какой подход я должен выбрать?
Большое спасибо за помощь. :)
редактировать конец