2015-06-24 44 views
1

出于某种原因,以下正则表达式不像我所期望的那样运行。用正则表达式查找空格的链接

我想从HTML广告中提取所有链接,尽管我似乎无法找到正确处理空格链接的方法。

我知道链接应该被编码,但如果我找不到它们,就没有办法对链接进行编码。

我对这个html进行测试 - 注意唯一的区别是{你的参考}中的空间。

Find out <a href="http://website.co.uk?element=1&amp;reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;">.</span><br /> 

Find out <a href="http://website.co.uk?element=1&amp;reference={yourreference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;">.</span><br /> 

用下面的正则表达式我只能得到链接,没有任何空间的预期:

href="http(s{0,1}):\/\/(\S+)" 

发现:

href="http://website.co.uk?element=1&amp;reference={yourreference}" 

但是,如果我改变\ S到一个。我希望检查返回链接到收盘”,但它几乎持续到字符串的结尾:

href="http(s{0,1}):\/\/(.+)" 

发现:

href="http://website.co.uk?element=1&amp;reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;" 

href="http://website.co.uk?element=1&amp;reference={yourreference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;" 

我也有一些不同的检查捡起不同的链接,最后看起来像这样:

(href="|href=\')%%siteurl%%(\S*)("|\') 
|href="www\.(\S+)" 
|href="http(s{0,1}):\/\/(\S+)" 
|href=\'www\.(\S+)\' 
|href=\'http(s{0,1}):\/\/(\S+)\' 

我不是在寻找这个设置的帮助,只是贴出原始正则表达式,我会相应地调整其余部分。

回答

1
href="http(s{0,1}):\/\/(.+?)" 

          ^^ 

让你的quantifier不贪心。

+1

完美,感谢您的快速响应! –