我需要一个给出以下XML的正则表达式,它会给我所有将'Bebidas'作为类别(categoria)的产品(productos),并且我必须在Sublime Text中执行此操作,因此只有选项使用正则表达式(不允许使用专用的XML解析器):
XML文件www.ethgf.com/electricos.xml
我使用(?s)<producto>(.+?Bebidas.+?)<\/producto>
时遇到问题,因为它突出显示了几乎所有的XML(通过最后一个标记关闭的第一个'producto'标记)。
答案 0 :(得分:2)
由于问题是关于选择整个<product>
节点,您可以使用以下正则表达式:
(?s)<product>(?:\s*<(\w+)>[^<]*?<\/\1>\s*)*?\s*<category>Drinks<\/category>(?:\s*<(\w+)>[^<]*?<\/\2>\s*)*?\s*<\/product>
它将突出显示包含 Drinks 类别的所有<product>
个节点,即使这些节点没有遵循某些严格的顺序: