我试图从源代码中提取网址。源代码类似于以下
text text text<h4 class="a"><a href="http://site1.com/url/" onmousedown="return rwt(this,'','','','15',111','','0333','','',home)">...</a></h4>
我到目前为止所获得的是(?<=<h4\ class="a"><a\ href=")http://.*
,但这仍然不是仅提取网址。我需要输出只有http://site1.com/url/
。
提前致谢!
答案 0 :(得分:1)
就像评论一样,使用dom或xml / html解析器而不是正则表达式。在浏览器中,您可以使用javascript:
执行此操作
var s = `text text text<h4 class="a"><a href="http://site1.com/url/" onmousedown="return rwt(this,'','','','15',111','','0333','','',home)">...</a></h4>
`;
var e = document.createElement('div');
e.innerHTML = s;
Array.from(e.getElementsByTagName("a")).forEach(link => {
console.log(link.href);
})
如果您不想在浏览器中执行此操作,则还有其他环境可用的html和xml解析器
答案 1 :(得分:0)
捕获组是为这样的任务设计的,虽然我同意使用正则表达式来解析HTML是不好的形式。如果您需要匹配的是您在此处提供的前缀和网址(并且您确保拥有格式良好的HTML(以及在任何显示的文本中正确转义的HTML))那么您可以使用正则表达式是:
/<h4 class="a"><a href="([^"]+)"/
https://regex101.com/r/skfhTm/1
第一个捕获组将包含URL。