RegEx для удаления всех XML-данных за пределами указанных тегов

Я использую последнюю и самую большую версию NotePad++. Возможно ли для RegEx удалить весь текст и теги, которые мне не нужны, и оставить только текст и теги, которые мне нужны? Теги, которые мне нужно сохранить, выглядят так:

<warning>I need this text to remain intact together with accompanying tags.</warning> 

Должно быть около 500 таких пар предупреждающих тегов, вложенных в различные уровни XML. Я хотел бы, чтобы RegEx удалил все данные, которые существуют вне этих предупреждающих тегов, но не открывающие и закрывающие предупреждающие теги сами по себе или текст внутри тегов. Ниже приведены четыре различных вариации RegEx, которые я протестировал, и все они устраняют текст, расположенный в предупреждающих тегах после выполнения операции поиска и замены, поэтому они не помогают:

<warning>[^<>]+</warning>

<warning>[^>]+</warning>

<warning>(.+?)</warning>

<warning>.*?</warning>

Я был бы чрезвычайно признателен за любую помощь, которая поможет мне в разработке RegEx, который будет выполнять задачу очистки данных, которую мне нужно выполнить.

1 ответ

  1. Я использую notepad++ regex найти и заменить ниже, кажется, работает для меня. Не забудьте выбрать регулярное выражение.
    Поиск и заменить оба regex ниже с пустой. Требуется 2 шага, хотя, еще не идеально

    1-я замена удалить все строки, которые не startswith предупреждение

    2-я замена удалить все пустые строки, оставив только строки с предупреждением

    ^(?!\s*?<warning>).*?$
    ^\s*