我有一个CSS文件,我想通过用空字符替换我的CSS文件中的任何其他字符来提取我的正则表达式编辑器中的所有URL。
css文件,如下所示:
@font-face {
font-family: 'font_name';
src: url('http://my-site.ext/path/to/font/proximanova-light-webfont.eot');
src: url('http://my-site.ext/path/to/font/proximanova-light-webfont.eot?#iefix') format('embedded-opentype'),url('http://my-site.ext/path/to/font/proximanova-light-webfont.woff') format('woff'),url('http://my-site.ext/path/to/font/proximanova-light-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
我使用以下正则表达式来替换文件内容的其余部分:
(?!(http[^\']+)).
但是不起作用。
最后的结果我喜欢这样:
http://my-site.ext/path/to/font/proximanova-light-webfont.eot
http://my-site.ext/path/to/font/proximanova-light-webfont.eot?#iefix
http://my-site.ext/path/to/font/proximanova-light-webfont.woff
http://my-site.ext/path/to/font/proximanova-light-webfont.ttf
这种模式有什么问题吗?
答案 0 :(得分:1)
这是一个可以在regex101中使用的解决方案,也可能是其他在线工具。
使用这个正则表达式(我为regex101转义了正斜杠):
搜索:
http[^\']+(*SKIP)(*F)|.
替换:空字符串
在the demo中,查看底部窗格(替换)。复制,粘贴,并且您有链接。
工作原理
交替|
的左侧匹配完成urls
然后故意失败,之后引擎跳到字符串中的下一个位置。右侧匹配一个单个字符,该字符将被空字符串替换。这可能听起来很费力,但考虑到规格,这是最有效的方法。
如果您想留下空格和换行符,请改用:
http[^\']+(*SKIP)(*F)|\S