Подтвердить что ты не робот

Найти все между двумя тегами XML с помощью RegEx

В RegEx я хочу найти тег и все между двумя XML tags, например:

<primaryAddress>
    <addressLine>280 Flinders Mall</addressLine>
    <geoCodeGranularity>PROPERTY</geoCodeGranularity>
    <latitude>-19.261365</latitude>
    <longitude>146.815585</longitude>
    <postcode>4810</postcode>
    <state>QLD</state>
    <suburb>Townsville</suburb>
    <type>PHYSICAL</type>
</primaryAddress>

Я хочу найти тег и все, что есть между primaryAddress, и стереть это.

Все, что находится между тегом primaryAddress, является переменной, но я хочу удалить весь тег и подтеги всякий раз, когда получаю primaryAddress.

Кто-нибудь знает, как это сделать?

4b9b3361

Ответ 1

Не рекомендуется использовать регулярное выражение для синтаксического анализа HTML/XML...

Однако, если вы все равно хотите это сделать, найдите шаблон регулярного выражения

<primaryAddress>[\s\S]*?<\/primaryAddress>

и замените его пустой строкой...

Ответ 2

Вы должны иметь возможность сопоставить его с: /<primaryAddress>(.+?)<\/primaryAddress>/

Содержимое между тегами будет в согласованной группе.

Ответ 3

это может захватывать самые внешние пары меток, даже с атрибутом в боковых или без конечных тегов

(<!--((?!-->).)*-->|<\w*((?!\/<).)*\/>|<(?<tag>\w+)[^>]*>(?>[^<]|(?R))*<\/\k<tag>\s*>)

edit: как упоминалось в комментарии выше, регулярное выражение всегда недостаточно для синтаксического анализа xml, попытка изменить регулярное выражение, чтобы соответствовать большей ситуации, делает его более продолжительным, но все еще бесполезным