不匹配的网址不起作用

时间:2014-06-19 09:03:00

标签: css regex

我有一个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

这种模式有什么问题吗?

1 个答案:

答案 0 :(得分:1)

这是一个可以在regex101中使用的解决方案,也可能是其他在线工具。

使用这个正则表达式(我为regex101转义了正斜杠):

搜索:

http[^\']+(*SKIP)(*F)|.

替换:空字符串

the demo中,查看底部窗格(替换)。复制,粘贴,并且您有链接。

工作原理

交替|的左侧匹配完成urls然后故意失败,之后引擎跳到字符串中的下一个位置。右侧匹配一个单个字符,该字符将被空字符串替换。这可能听起来很费力,但考虑到规格,这是最有效的方法。

如果您想留下空格和换行符,请改用:

http[^\']+(*SKIP)(*F)|\S