/https?\:\/\/[^\" ]+/
我正在使用上面的内容搜索包含文本,图片网址和常规网址的HTML代码。我想修改上面的内容,使它只匹配非图像的字符串。我搜索了这个相当多但是干了。我试图使用“负向前瞻匹配”来忽略以jpg | png | gif结尾的链接,但我没有取得任何成功。
例如:
http://www.google.com <- valid match
www.example.com/image.jpg <-should not match
有什么想法吗?
答案 0 :(得分:4)
嗯,否定的前瞻似乎不是很健康:)
尝试这样的事情:
https?://(?![^" ]*(?:jpg|png|gif))[^" ]+
^-----------------------^
前瞻的格式为(?! ... )
,我在图片扩展名前加[^" ]*
,以允许https?//
部分与扩展名之间的任意数量的字符。然后,您可以继续将字符串的其余部分与您正在使用的[^" ]
匹配。
另外,你应用这个正则表达式:
preg_match('~https?://(?![^" ]*(?:jpg|png|gif))[^" ]+~', $text, $match);
这样你就不会有很多东西用反斜杠逃脱。