正则表达式匹配打开和关闭标记以及该标记内的某些文本模式

Jay*_*ran 7 regex xml

以下是我从sitemap.xml获取的示例自定义标记

<url>
  <loc>http://sitename.com/programming/php/?C=D;O=A</loc>
  <changefreq>weekly</changefreq>
  <priority>0.64</priority>
</url>
Run Code Online (Sandbox Code Playgroud)

有很多像这样的条目,如果你看到loc标签,它有c = d; 0 = a在最后.我想删除所有以<url>结尾开头的条目,</url>其中包含C = D; 0 = A或类似的模式.

以下表达式与上面指定的整个标记匹配

<url>(.|\r\n)*?<\/url>
Run Code Online (Sandbox Code Playgroud)

但我希望像上面声明中指定的那样匹配.

我们如何形成正则表达式来匹配这些条件(模式)?

mor*_*rja 11

试试这个:

/<url>(?:(?!<\/url>).)*C=D;O=A.*?<\/url>/m
Run Code Online (Sandbox Code Playgroud)

负向前瞻保证您不匹配多个节点.

见这里:rubular


Pet*_*nov 6

将regex用于XML并不是一个好主意.根据语言,您应该使用某些XML阅读器,提取<url>节点,然后使用正则表达式匹配节点的内容.XPath是一种用于查询XML数据的有用语言,它由许多XML库支持.