Znajdź wszystko między dwoma znacznikami XML z RegEx
W RegEx
chcę znaleźć tag i wszystko pomiędzy dwoma XML tags
, Jak poniżej:
<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>
Chcę znaleźć znacznik i wszystko pomiędzy primaryAddress
i usunąć to.
Wszystko pomiędzy znacznikiem primaryAddress
jest zmienną, ale chcę usunąć cały znacznik i pod-znaczniki, gdy tylko dostanę primaryAddress
.
3 answers
Nie jest dobrym pomysłem używanie regex do parsowania HTML / XML...
Jeśli jednak chcesz to zrobić, poszukaj wzorca regex
<primaryAddress>[\s\S]*?<\/primaryAddress>
I zastąp go pustym łańcuchem...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-05 22:48:55
Powinieneś być w stanie dopasować go do: /<primaryAddress>(.+?)<\/primaryAddress>/
Zawartość pomiędzy znacznikami będzie w dopasowanej grupie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-05 22:48:07
Może przechwytywać najbardziej oddaloną parę warstw znaczników, nawet z atrybutami w side lub bez znaczników końcowych
(<!--((?!-->).)*-->|<\w*((?!\/<).)*\/>|<(?<tag>\w+)[^>]*>(?>[^<]|(?R))*<\/\k<tag>\s*>)
Edit: jak wspomniano w komentarzu powyżej, regex zawsze nie wystarcza do analizy xml, próbując zmodyfikować regex tak, aby pasował do większej sytuacji, tylko sprawia, że jest dłuższy, ale nadal bezużyteczny
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 09:08:44