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

xml Regex matching the whole xml file

我需要一个正则表达式,给定以下 XML,将给我所有具有 'Bebidas' 作为类别 (categoria) 的产品 (productos),我必须在Sublime Text,所以只能选择使用正则表达式(不允许专用 XML 解析器):

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

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

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

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

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