簡體   English   中英

如何使用Notepad ++和正則表達式查找和替換URL?

[英]How do I find & replace a url using Notepad++ and regular expressions?

我已經搜索了一段時間了,但是還沒有找到如何做我想做的事情。

我需要搜索一個文件夾並找到包含帶有特定基本URL的href標記的文件。 我已經使用以下正則表達式完成了此操作:

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

找到使用此URL的文件和位置后,我需要對找到的文本進行替換。 這是我的問題所在。 href屬性肯定包含以下文本:

https://www.mytesturl.com

此外,它之后可以包含任何方式的查詢字符串值或“ /”路徑。

最終,我的查找/替換操作需要產生結果:

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

其中<extra>是從“ .com”末尾到引號中初始href值末尾的所有內容。

所以

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

將會:

href ='<%= Request.Url.Scheme +“://” + Request.Url.Host +“?somevar = somevalue&secondvar = secondvalue”%>'

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

將會:

href ='<%= Request.Url.Scheme +“://” + Request.Url.Host +“ / otherpath?somevar = somevalue&secondvar = secondvalue”%>'

Notepad ++可以執行正則表達式查找/替換嗎?

您已經遇到了幾個問題,當您不應該使用Regexes時,它們都是源自使用Regexes。 自己寫的一個小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!)

順便說一句,您確實應該在ASP中使用&而不是+進行字符串連接。

此外,“查找”主題上的Notepad ++手冊(按F1鍵)解釋了該應用程序使用Scintilla正則表達式引擎,並鏈接到Scintilla文檔 ,這是此類工作的便捷參考。 請務必閱讀文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM