正则表达式:提取被文本包围的 URL



我正在尝试从源代码中提取URL。源代码类似于以下内容

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://.*但这仍然不是仅提取URL。我需要输出只有http://site1.com/url/.

提前感谢!

就像评论的那样,使用 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 解析器

捕获组是为这样的任务而设计的,尽管我同意使用正则表达式来解析 HTML 是糟糕的形式。如果您只需要匹配您在此处提供的前缀和 URL(并且您保证具有格式正确的 HTML(以及任何显示的文本中正确转义的 HTML((,那么您可以使用的正则表达式是:

/<h4 class="a"><a href="([^"]+)"/

https://regex101.com/r/skfhTm/1

第一个捕获组将包含 URL。

最新更新