【问题标题】:How do I find & replace a url using Notepad++ and regular expressions?如何使用 Notepad++ 和正则表达式查找和替换 url?
【发布时间】:2016-04-02 15:38:21
【问题描述】:

我已经在这方面搜索了一段时间,但还没有弄清楚如何做我想做的事情。

我需要搜索一个文件夹并找到包含具有特定基本 URL 的 href 标记的文件。我已经使用以下正则表达式完成了此操作:

(href="(https:\/\/www\.mytesturl\.com))

找到使用此 URL 的文件和位置后,我需要对找到的文本进行替换。这就是我的问题所在。 href 属性肯定会包含文本:

https://www.mytesturl.com

此外,它可能包含任何形式的查询字符串值或在此之后的“/”路径。

最终,我的查找/替换操作需要产生结果:

href='<%= Request.Url.Scheme + "://" + Request.Url.Host + "<extra>" %>'

&lt;extra&gt; 是从“.com”结尾到引号中的初始 href 值结尾的所有内容。

所以

https://www.mytesturl.com?somevar=somevalue&secondvar=secondvalue

应该是:

href=''

https://www.mytesturl.com/otherpath?somevar=somevalue&secondvar=secondvalue

应该是:

href=''

Notepad++ 可以像这样进行正则表达式查找/替换吗?

【问题讨论】:

    标签: php regex url replace notepad++


    【解决方案1】:

    您已经遇到了几个问题,它们都源于在您不应该使用正则表达式时使用正则表达式。自己编写一个 PHP 脚本来遍历目录,解析每个 HTML 文件,导航 DOM 以找到 a 标记并检查它们的 href 属性...然后重写它们(对于 那个你可以使用正则表达式!)。

    如果您可以接受误报(即未找到某些事件),那么您可以这样做……使用捕获和反向引用。

    所以,你可以搜索:

    href="https:\/\/www\.mytesturl\.com([^"]*)"
    //                                 ^^^^^^^
    //                             optional capture
    //                         any characters until '"'
    

    并将其替换为:

    href='<%= Request.Url.Scheme + "://" + Request.Url.Host + "\1" %>'
    //                                                         ^^
    //                                                 contents of capture
    //                                               (which may be nothing!)
    

    顺便说一句,您确实应该使用&amp;,而不是+,在ASP 中进行字符串连接。

    此外,“查找”主题的 Notepad++ 手册(按 F1)解释说该应用程序使用 Scintilla 正则表达式引擎,并链接到 the Scintilla documentation,这是此类工作的非常方便的参考。 请务必阅读文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2015-01-11
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多