正则表达式匹配不包含其他标记的xml标记

时间:2012-08-28 03:30:04

标签: xml regex parsing regex-lookarounds

假设我想要查找这样的XML:

<Address>
    <Street>Windsor</Street>
</Address>

我不想像这样匹配XML:

<Address>
    <Number>15</Number>
    <Street>Windsor</Street>
</Address>

也就是说,我正在寻找Address节点包含Number标记的地址。

我尝试了像

这样的模式
<Address>(?!Number)</Address>

<Address>.*?(?!Number).*?</Address>

但我无法弄清楚: - (

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

<Address>(?:(?!<Address>)(?!<Number>).)*</Address>

警告:假设您的文字中没有换行符,或者.可以跨越换行符边界,那么调用/sDOTALL模式{{1}将启用某些正则表达式语言。