[英]How do I find & replace a url using Notepad++ and regular expressions?
我已经搜索了一段时间了,但是还没有找到如何做我想做的事情。
我需要搜索一个文件夹并找到包含带有特定基本URL的href标记的文件。 我已经使用以下正则表达式完成了此操作:
(href="(https:\/\/www\.mytesturl\.com))
找到使用此URL的文件和位置后,我需要对找到的文本进行替换。 这是我的问题所在。 href属性肯定包含以下文本:
此外,它之后可以包含任何方式的查询字符串值或“ /”路径。
最终,我的查找/替换操作需要产生结果:
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.