正则表达式-提取HTML标记<a>的href

时间:2019-10-11 13:42:58

标签: java regex

我有这个正则表达式:

(?=<a .*href=")(.+)(?=".*>My Text<\/a>)

以此,我尝试从href的特定HTML标记<a>中提取HTML的值。

假设我有这个HTML

<html>
<head>
    ...
</head>
<body>
    ...
     <a class="..." href="..." ..="..">My Text</a>
    ...
</body>
</html>

使用正则表达式,我得到<a class="..." href="..." ..="..(在">之前停下来),但我只需要href值。

编辑:此答案:regular expression for finding 'href' value of a <a> link对我没有帮助。通过该正则表达式,我得到了具有标签所有属性的所有标签<a>

2 个答案:

答案 0 :(得分:2)

考虑使用HTML解析器。正则表达式通常不足以解析HTML。对于您发布的示例,以及它的相当有限的变体,应使用以下命令:

<a[\s\S]*?href="([^"]+)"[\s\S]*?>

Demo

答案 1 :(得分:1)

您可以使用此正则表达式在href属性内找到链接:

正则表达式:

<a .*? `href="(.*?)"`.*?>(?>.*?<\/a>)

说明:

.*? ==> anything with non-greedy markup

href="(.*?)" ==> the captured group

(?>.*?<\/a>) ==> loop-ahead for the closed tag

演示: Here