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

时间:2015-12-02 17:46:32

标签: regex search replace find notepad++

我只是通过 RegEx 对其他伙伴提出的问题的答案,但在我的案例中无法找到解决问题的方法。 我还阅读了一些助手给出的正则表达式参考文献,但我无法正确理解。

我正在编辑我的网站站点地图。在站点地图中,我在表单中有一些链接:

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

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

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

此处,每个链接的?id=itag=值都不同。因此,对于已经提到的每个链接,这些都不应该改变。

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

3 个答案:

答案 0 :(得分:1)

可能有用的一些事情 -
请注意,找不到错误的/download/的可能性未遵循 通过非空白或问号,然后是问号,
除了网址

之外,几乎不可能匹配任何内容

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

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

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

答案 1 :(得分:0)

你应该找到

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

并将其替换为

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

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

答案 2 :(得分:0)

启用正则表达式并使用此搜索&amp;替换:

查找

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

替换为:

\1\3