繁体   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