我想要做的是更新文档中HTML背景标记的URL。应该更新仅限于本地URL的警告,因此任何启动http的内容都应该被忽略。
我试图实现的RegEx需要替换文件名和扩展名之前的路径。例如:
background="image.gif"
background="/image.gif"
background="images/image.gif"
background="images/directory/image.gif"所有产出均应作为:
background="/mydirectory/image.gif"与往常一样,输入文件中可能使用了单引号或双引号。
我已经有了一个现有的RegEx,它对CSS图像引用做了非常类似的工作。RegEx是:
url\((?:\'|\"")?(?!(?:http|ftp))(?<path>.+)\/(?<filename>.*?)\1?\)我以为我可以简单地用background=替换url()匹配,但到目前为止我还没有成功。
任何帮助都有很大帮助。
发布于 2015-01-09 16:18:26
参见这里的演示 Regex background=['"](?!\s*(http|ftp):\/\/)(?:[^'"]*\/)*(?<filename>[^'"]+)['"]
详情如下:
baground=匹配“background=”文字['"]匹配任何报价(?!\s*(http|ftp):\/\/)确保报价后没有http://或ftp:// (即使前面有空格)(?:[^'"]*\/)*匹配路径,直到文件名仍然在引号中时,[^'"]*\/包含在一个非捕获组中,其中(?:)可以被*重复0或更长的时间(可以被?替换,因为它实际上将匹配全部或根本不匹配)(?<filename>[^'"]+)捕获捕获组文件名中任何非引号(非+量词为非空)的内容['"]匹配最后一个引号以避免捕获它旧的答案(如果感兴趣的话):参见这里的演示
正则表达式是:background=['"](?!\s*(http|ftp):\/\/)\/?(?<filename>[^'"]*)['"]
详情如下:
baground=匹配“background=”文字['"]匹配任何报价(?!\s*(http|ftp):\/\/)确保报价后没有http://或ftp:// (即使前面有空格)\/?匹配前导/避免捕获(如果存在)(?<filename>[^'"]*)捕获捕获组文件名中没有引用的任何内容['"]匹配最后一个引号以避免捕获它请参阅替换演示程序,但其思想是用/mydir/${filename}替换
https://stackoverflow.com/questions/27864395
复制相似问题