如何将此正则表达式规则更改为不接受括号?

时间:2013-06-02 09:45:42

标签: php regex

我有以下正则规则(在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]

我该怎么做?

2 个答案:

答案 0 :(得分:3)

这是negative lookaround assertions的工作:

'/(?<![(\[])((f|ht)tp)(.*?)\.(gif|png|jpg|jpeg)(?![)\]])/'

(?<![(\[])断言在比赛开始前没有[((?![)\]])断言没有))跟在它之后。

修改

如果你想匹配一个文字点,不要忘记逃避点。

答案 1 :(得分:0)

您的模式缺少^$。尝试这种模式:

^((f|ht)tp)(.*?)(.gif|.png|.jpg|.jpeg)$