我有以下正则规则(在PHP中)来查找文本文档中的图像链接:
'/((f|ht)tp)(.*?)(.gif|.png|.jpg|.jpeg)/'
因此,它接受以下内容:
http://www.example.com/image.jpg
但是,我希望不接受以下内容:
(http://www.example.com/image.jpg)
OR:
[http://www.example.com/image.jpg]
我该怎么做?
答案 0 :(得分:3)
这是negative lookaround assertions的工作:
'/(?<![(\[])((f|ht)tp)(.*?)\.(gif|png|jpg|jpeg)(?![)\]])/'
(?<![(\[])
断言在比赛开始前没有[
或(
,(?![)\]])
断言没有)
或)
跟在它之后。
修改强>
如果你想匹配一个文字点,不要忘记逃避点。
答案 1 :(得分:0)
您的模式缺少^
和$
。尝试这种模式:
^((f|ht)tp)(.*?)(.gif|.png|.jpg|.jpeg)$