首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx更新background= URL

RegEx更新background= URL
EN

Stack Overflow用户
提问于 2015-01-09 15:57:25
回答 1查看 69关注 0票数 1

我想要做的是更新文档中HTML背景标记的URL。应该更新仅限于本地URL的警告,因此任何启动http的内容都应该被忽略。

我试图实现的RegEx需要替换文件名和扩展名之前的路径。例如:

代码语言:javascript
复制
background="image.gif"
background="/image.gif"
background="images/image.gif"
background="images/directory/image.gif"

所有产出均应作为:

代码语言:javascript
复制
background="/mydirectory/image.gif"

与往常一样,输入文件中可能使用了单引号或双引号。

我已经有了一个现有的RegEx,它对CSS图像引用做了非常类似的工作。RegEx是:

代码语言:javascript
复制
url\((?:\'|\"")?(?!(?:http|ftp))(?<path>.+)\/(?<filename>.*?)\1?\)

我以为我可以简单地用background=替换url()匹配,但到目前为止我还没有成功。

任何帮助都有很大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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}替换

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27864395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档