用于更新背景= URL 的正则表达式
RegEx to update background= URLs
我想做的是更新文档中 HTML 背景标签的 URL。仅应更新本地 URL 的警告,因此应忽略任何以 http 开头的内容。
我要实现的正则表达式需要替换文件名和扩展名之前的路径。例如:
background="image.gif"
background="/image.gif"
background="images/image.gif"
background="images/directory/image.gif"
应该全部输出为:
background="/mydirectory/image.gif"
一如既往,输入文件中可能同时使用了单引号或双引号。
我已经有一个现有的正则表达式,它正在为 CSS 图像引用做非常相似的工作。正则表达式是:
url\((?:\'|\"")?(?!(?:http|ftp))(?<path>.+)\/(?<filename>.*?)?\)
我以为我可以用 background= 替换 url() 匹配项,但到目前为止我还没有成功。
非常感谢任何帮助。
See demo here
正则表达式 background=['"](?!\s*(http|ftp):\/\/)(?:[^'"]*\/)*(?<filename>[^'"]+)['"]
详情:
baground=
字面匹配'background='
['"]
匹配任何引用
(?!\s*(http|ftp):\/\/)
确保引号后没有 http:// 或 ftp://(即使前面有空格)
(?:[^'"]*\/)*
匹配路径,直到文件名仍在引号内 [^'"]*\/
包含在非捕获组中 (?:)
可以重复 0 次或更多次 *
(可以替换为 ?
,因为它实际上会匹配全部或不匹配)
(?<filename>[^'"]+)
在捕获组文件名 中捕获任何非引号(并且 +
量词非空)
['"]
匹配最后一个引号以避免捕获它
旧答案(以防万一):
See demo here
正则表达式是:background=['"](?!\s*(http|ftp):\/\/)\/?(?<filename>[^'"]*)['"]
详情:
baground=
字面匹配'background='
['"]
匹配任何引用
(?!\s*(http|ftp):\/\/)
确保引号后没有 http:// 或 ftp://(即使前面有空格)
\/?
匹配前导 / 以避免在存在时捕获它
(?<filename>[^'"]*)
在捕获组文件名中捕获任何不是引号的内容
['"]
匹配最后一个引号以避免捕获它
看demo替换,但是思路是用/mydir/${filename}
替换
我想做的是更新文档中 HTML 背景标签的 URL。仅应更新本地 URL 的警告,因此应忽略任何以 http 开头的内容。
我要实现的正则表达式需要替换文件名和扩展名之前的路径。例如:
background="image.gif"
background="/image.gif"
background="images/image.gif"
background="images/directory/image.gif"
应该全部输出为:
background="/mydirectory/image.gif"
一如既往,输入文件中可能同时使用了单引号或双引号。
我已经有一个现有的正则表达式,它正在为 CSS 图像引用做非常相似的工作。正则表达式是:
url\((?:\'|\"")?(?!(?:http|ftp))(?<path>.+)\/(?<filename>.*?)?\)
我以为我可以用 background= 替换 url() 匹配项,但到目前为止我还没有成功。
非常感谢任何帮助。
See demo here
正则表达式 background=['"](?!\s*(http|ftp):\/\/)(?:[^'"]*\/)*(?<filename>[^'"]+)['"]
详情:
baground=
字面匹配'background='['"]
匹配任何引用(?!\s*(http|ftp):\/\/)
确保引号后没有 http:// 或 ftp://(即使前面有空格)(?:[^'"]*\/)*
匹配路径,直到文件名仍在引号内[^'"]*\/
包含在非捕获组中(?:)
可以重复 0 次或更多次*
(可以替换为?
,因为它实际上会匹配全部或不匹配)(?<filename>[^'"]+)
在捕获组文件名 中捕获任何非引号(并且 ['"]
匹配最后一个引号以避免捕获它
+
量词非空)
旧答案(以防万一): See demo here
正则表达式是:background=['"](?!\s*(http|ftp):\/\/)\/?(?<filename>[^'"]*)['"]
详情:
baground=
字面匹配'background='['"]
匹配任何引用(?!\s*(http|ftp):\/\/)
确保引号后没有 http:// 或 ftp://(即使前面有空格)\/?
匹配前导 / 以避免在存在时捕获它(?<filename>[^'"]*)
在捕获组文件名中捕获任何不是引号的内容['"]
匹配最后一个引号以避免捕获它
看demo替换,但是思路是用/mydir/${filename}
替换