it-swarm.dev

Mit RegEx finden Sie alles zwischen zwei XML-Tags

In RegEx möchte ich das Tag und alles zwischen zwei XML tags finden, wie zum Beispiel:

<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>

Ich möchte das Tag und alles zwischen primaryAddress finden und löschen. 

Alles zwischen dem primaryAddress-Tag ist eine Variable, aber ich möchte das gesamte Tag und die Untertags entfernen, wenn ich primaryAddress bekomme.

Hat jemand eine Idee, wie das geht?

41
Doz

Es ist keine gute Idee, Regex zum HTML/XML-Parsing zu verwenden ...

Wenn Sie es trotzdem möchten, suchen Sie nach Regex-Muster 

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

und ersetze es durch einen leeren String ...

92
Ωmega

Sie sollten in der Lage sein, es mit folgendem zu vergleichen: /<primaryAddress>(.+?)<\/primaryAddress>/

Der Inhalt zwischen den Tags befindet sich in der übereinstimmenden Gruppe.

15
doublesharp

auf diese Weise können die äußersten Layer-Tags von Tags erfasst werden, sogar mit Attributen in der Seite oder ohne End-Tags

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

edit: Wie im Kommentar oben erwähnt, reicht regex nicht immer aus, um xml zu analysieren. Wenn Sie versuchen, den regex an die Situation anzupassen, wird er länger, aber immer noch unbrauchbar

3
Valen

Es ist nicht gut, diese Methode zu verwenden, aber wenn Sie sie wirklich mit regex .__ teilen wollen.

<primaryAddress.*>((.|\n)*?)<\/primaryAddress>

Die verifizierte Antwort gibt die Tags zurück, dies gibt jedoch nur den Wert zwischen den Tags zurück.

0
saman