出于某种原因,以下正则表达式的行为并不像我期望的那样。
我正在尝试从html广告素材中提取所有链接,但我似乎找不到合适处理空格链接的方法。
我知道链接应该被编码,但是如果我找不到它们就没有办法对链接进行编码。
我正在测试这个HTML - 请注意,唯一的区别是{your reference}中的空格。
Find out <a href="http://website.co.uk?element=1&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&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&reference={yourreference}"
但是,如果我将\ S更改为a。我希望检查将链接返回到结束“,但它几乎持续到字符串的结尾:
href="http(s{0,1}):\/\/(.+)"
找到:
href="http://website.co.uk?element=1&reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;"
href="http://website.co.uk?element=1&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+)\'
我不是在寻找这套装置的帮助,只是发布了原始的正则表达式,我会相应调整其余部分。
答案 0 :(得分:1)
href="http(s{0,1}):\/\/(.+?)"
^^
让你的quantifier
非贪婪。