如何从<a> html标签提取超链接文本?

时间:2019-12-01 02:03:32

标签: html regex matlab hyperlink

给出一个包含'blabla <a href="address">text</a> blabla'的字符串,我想从中提取'text'
regexp文档建议使用'<(\w+).*>.*</\1>'表达式,但会提取整个<a> ... </a>事物。
当然,我可以像这样继续使用strfind

line = 'blabla <a href="address">text</a> blabla';
atag = regexp(line,'<(\w+).*>.*</\1>','match', 'once');
from = strfind(atag, '>');
to = strfind(atag, '<');
text = atag((from(1)+1):(to(2)-1))

,但是,我可以使用另一个表达式一次找到text吗?

3 个答案:

答案 0 :(得分:1)

您可以在Matlab中使用extractHTMLText函数,可以在下面的link中进行阅读。 获得所需输出的示例:

line = 'blabla <a href="address">text</a> blabla';
l = split(extractHTMLText(line), ' ');
l{2}

如果您不想使用内置函数,则可以按照 Nick 的建议使用 regex

line = 'blabla <a href="address">text</a> blabla';
[atag,tok] = regexp(line,'<(\w+).*>(.*?)</\1>','match','tokens'); 
t = tok(1,1){1};
t{2}

您将获得所需的输出

答案 1 :(得分:1)

您可以简单地使用Group

您的模式更新将如下所示:

<(\w+).*>(.*)<\/\1>

其中一个包含所有标签:

<.*>(.*)<.*>

Regex101

答案 2 :(得分:0)

如果您使用的是JQuery,请尝试此操作。不需要正则表达式。但是,如果DOM过多,这可能会对性能产生负面影响。

$jqueryobj = $(line);
var text = $jqueryobj.find("a").text();