xml正则表达式匹配整个xml文件

时间:2015-03-31 20:32:41

标签: regex xml sublimetext

我需要一个给出以下XML的正则表达式,它会给我所有将'Bebidas'作为类别(categoria)的产品(productos),并且我必须在Sublime Text中执行此操作,因此只有选项使用正则表达式(不允许使用专用的XML解析器):

XML文件www.ethgf.com/electricos.xml

我使用(?s)<producto>(.+?Bebidas.+?)<\/producto>时遇到问题,因为它突出显示了几乎所有的XML(通过最后一个标记关闭的第一个'producto'标记)。

1 个答案:

答案 0 :(得分:2)

由于问题是关于选择整个<product>节点,您可以使用以下正则表达式:

(?s)<product>(?:\s*<(\w+)>[^<]*?<\/\1>\s*)*?\s*<category>Drinks<\/category>(?:\s*<(\w+)>[^<]*?<\/\2>\s*)*?\s*<\/product>

它将突出显示包含 Drinks 类别的所有<product>个节点,即使这些节点没有遵循某些严格的顺序:

enter image description here