我有一个帮助创作工具生成的站点地图。它列出了帮助系统中的每个文件。我只想要html / htm文件。结构如下所示:
<url>
<loc>https://help.website.com/welcome.htm</loc>
</url>
<url>
<loc>https://help.website.com/Images/prettyButterfly.png</loc>
</url>
<url>
<loc>https://help.website.com/Resources/Stylesheets/master.css</loc>
</url>
<url>
<loc>https://help.website.com/Resources/Scripts/init.js</loc>
</url>
<url>
<loc>https://help.website.com/gettingStarted/firstSteps.html</loc>
</url>
我可以使用什么正则表达式去除不包含html或htm后代节点的节点(从<url>
到</url>
)?我打算使用Notepad ++进行搜索。
我不是一个伟大的正则表达式,我尝试了各种各样的事情无济于事,我真的可以在这里使用一些专家帮助。谢谢!
答案 0 :(得分:1)
您可以使用以下表达式:
(<url>\s*<loc>[^<]*\.html?<\/loc>\s*<\/url>)|<url>\s*<loc>[^<]*<\/loc>\s*<\/url>\n?
并用第一个捕获组\1
替换每个匹配。
<强>解释强>
(<url>\s*<loc>[^<]*\.html?<\/loc>\s*<\/url>)
- 捕获组以匹配<url>
节点以<loc>
或.html
.htm
个节点
|
- 替代..或:<url>\s*<loc>[^<]*<\/loc>\s*<\/url>
- 匹配其他<url>
个节点换句话说,这匹配包含单个<url>
节点的每个<loc>
节点,并用第一个捕获组替换每个节点。由于仅捕获具有HTML / HTM扩展名的节点,因此将删除其他节点。