Найти все между двумя тегами 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
.
Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Не рекомендуется использовать регулярное выражение для синтаксического анализа HTML/XML...
Однако, если вы все равно хотите это сделать, найдите шаблон регулярного выражения
<primaryAddress>[\s\S]*?<\/primaryAddress>
и замените его пустой строкой...
Ответ 2
Вы должны иметь возможность сопоставить его с: /<primaryAddress>(.+?)<\/primaryAddress>/
Содержимое между тегами будет в согласованной группе.
Ответ 3
это может захватывать самые внешние пары меток, даже с атрибутом в боковых или без конечных тегов
(<!--((?!-->).)*-->|<\w*((?!\/<).)*\/>|<(?<tag>\w+)[^>]*>(?>[^<]|(?R))*<\/\k<tag>\s*>)
edit: как упоминалось в комментарии выше, регулярное выражение всегда недостаточно для синтаксического анализа xml, попытка изменить регулярное выражение, чтобы соответствовать большей ситуации, делает его более продолжительным, но все еще бесполезным