Sitemap.xml 中的 RegEx:如果后代节点文件类型不是 html,如何删除节点?
RegEx in Sitemap.xml: How do I delete node if descendant node file type is not html?
我有一个由帮助创作工具生成的站点地图。它列出了帮助系统中的每个文件。我只想要 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++ 进行搜索。
我不是一个很好的正则表达式专家,我尝试过各种方法都无济于事,我真的需要一些专家的帮助。非常感谢!
您可以使用以下表达式:
(<url>\s*<loc>[^<]*\.html?<\/loc>\s*<\/url>)|<url>\s*<loc>[^<]*<\/loc>\s*<\/url>\n?
并用第一个捕获组替换每个匹配项,</code>。</p>
<p><strong>解释:</strong></p>
<ul>
<li><code>(<url>\s*<loc>[^<]*\.html?<\/loc>\s*<\/url>)
- 捕获组以匹配具有单个 <loc>
节点以 .html
或 .htm
结尾的 <url>
节点
|
- 交替.. 或:
<url>\s*<loc>[^<]*<\/loc>\s*<\/url>
- 匹配其他 <url>
个节点
换句话说,这匹配包含单个 <loc>
节点的每个 <url>
节点,并用第一个捕获组替换每个节点。由于仅捕获具有 HTML/HTM 扩展名的节点,因此删除了其他节点。
我有一个由帮助创作工具生成的站点地图。它列出了帮助系统中的每个文件。我只想要 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++ 进行搜索。
我不是一个很好的正则表达式专家,我尝试过各种方法都无济于事,我真的需要一些专家的帮助。非常感谢!
您可以使用以下表达式:
(<url>\s*<loc>[^<]*\.html?<\/loc>\s*<\/url>)|<url>\s*<loc>[^<]*<\/loc>\s*<\/url>\n?
并用第一个捕获组替换每个匹配项,</code>。</p>
<p><strong>解释:</strong></p>
<ul>
<li><code>(<url>\s*<loc>[^<]*\.html?<\/loc>\s*<\/url>)
- 捕获组以匹配具有单个 <loc>
节点以 .html
或 .htm
结尾的 <url>
节点
|
- 交替.. 或:<url>\s*<loc>[^<]*<\/loc>\s*<\/url>
- 匹配其他 <url>
个节点换句话说,这匹配包含单个 <loc>
节点的每个 <url>
节点,并用第一个捕获组替换每个节点。由于仅捕获具有 HTML/HTM 扩展名的节点,因此删除了其他节点。