用于在两个XML标记之间查找文本的正则表达式

时间:2015-12-01 10:17:56

标签: regex xml

我已阅读有关此主题的其他帖子,但我找不到答案。我想在两个XML标签之间找到一些东西,但我不想在结果中看到标签。在一篇文章中,我可以看到所有包含两个标记的行,但我不希望在结果中只看到标签中的标签或标签之间的数字。
示例:

<primaryAddress>
    <addressLine>280 Flinders Mall</addressLine>
    <geoCodeGranularity>PROPERTY</geoCodeGranularity>
    <state:sti condition="Equals">include1</state:sti>
    <latitude>-19.261365</latitude>
    <longitude>146.815585</longitude>
    <state:sti condition="Equals">include1.1</state:sti>
    <postcode>4810</postcode>
    <state:stiv condition="Equals">not-include</state:stiv>
    <suburb>Townsville</suburb>
    <type>PHYSICAL</type>
</primaryAddress>

我想查找<state:sti></state:sti>代码之间的所有内容。例如,在运行正则表达式之后,我想看到这些结果:

include1
include1.1

我不希望因为其他标签而看到“不包含”。如果你写了答案,请告诉我在哪里可以测试结果。

2 个答案:

答案 0 :(得分:1)

试试这个:

/(<.+>)(.+)(<\/.+>)/g

每个匹配的第二组将是标签之间的数据

答案 1 :(得分:1)

  

我想查找<state:sti></state:sti>之间的所有内容   标签

/<state:sti .*?>(.*?)<\/state:sti>/g
  

...请告诉我在哪里可以测试结果。

就在这里:

text = '<primaryAddress>\
    <addressLine>280 Flinders Mall</addressLine>\
    <geoCodeGranularity>PROPERTY</geoCodeGranularity>\
    <state:sti condition="Equals">include1</state:sti>\
    <latitude>-19.261365</latitude>\
    <longitude>146.815585</longitude>\
    <state:sti condition="Equals">include1.1</state:sti>\
    <postcode>4810</postcode>\
    <state:stiv condition="Equals">not-include</state:stiv>\
    <suburb>Townsville</suburb>\
    <type>PHYSICAL</type>\
</primaryAddress>';

document.write(text.match(/<state:sti .*?>(.*?)<\/state:sti>/g));