Notepad++ 中的 RegEx 删除或替换文本范围

RegEx in Notepad++ To Remove or Replace Range of Text

我刚刚浏览了 RegEx 对其他伙伴问题的回答,但在我的案例中找不到任何解决方案。 我还阅读了这里的一些帮助者提供的正则表达式参考,但我无法正确理解。

我正在编辑我的网站站点地图。在站点地图中,我有一些 link 的形式:

http://foo.com/download/something-after-download-different-for-each-link-12-23-2014.html?id=my5sIUosfiQ&itag=18

我想将所有这些 link 简单地更改为:

http://foo.com/download/?id=my5sIUosfiQ&itag=18

此处,?id=itag= 值对于每个 link 都是不同的。因此,不应针对已经提到的每个 link 更改这些内容。

此外,每个 link 的 something-after-download-different-for-each-link-12-23-2014.html 部分也不同,因为每个文件的下载方式都不同。所以,我想基本上从每个 link 中删除这部分。我该怎么做?

你应该找到

http://foo\.com/download/[^?]*\?id=(.*)

并将其替换为

http://foo\.com/download/\?

这会抓取 ...download/?id=... 之间的所有内容并将其删除。

一些可能有用的东西 -
请注意,发现错误的几率 /download/ 未遵循
by 非空格也不是问号,然后是问号,
使这几乎不可能匹配 url 的
)

以外的任何东西

如果 np++ 使用 \K 结构你可以使用这个
查找:/download/\K[^\s?]+(?=\?)
替换:无

如果没有,你可以使用这个
查找:(?<=/download/)[^\s?]+(?=\?)
替换:无

或者,甚至更好
查找:(/download/)[^\s?]+(?=\?)
替换:

启用正则表达式并使用此搜索和替换:

查找:

(http://foo.com/download/)(.*)(\?id=my5sIUosfiQ&amp;itag=18)

替换为: