正则表达式匹配http://而不是http://前面带引号

时间:2013-02-20 15:27:24

标签: php regex html-parsing

我有这个RegEx表达式来匹配 http:// 链接一样的文本部分:

([A-Za-z]{3,9}):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?(\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?

然后将它们转换为带有一些代码的超链接。它真的很好用。

然而,http://文本的一部分可以在< img>标签也是:

<img src="http://www.nature.com/images/home_03/main_news_pic2013.02.19.jpg" alt="Pulpit rock" width="304" height="228">

所以,我必须修改现有的RegEx,以便不匹配带引号或撇号的http链接式文本部分。怎么不匹配:

"http

我尝试了[^“|']:

[^"|']([A-Za-z]{3,9}):\/\/ ..........

但它不起作用。

1 个答案:

答案 0 :(得分:2)

你需要使用负面的lookbehind(即“not before with”):

(?<!")http://…