给出一个包含'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
吗?
答案 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)
答案 2 :(得分:0)
如果您使用的是JQuery,请尝试此操作。不需要正则表达式。但是,如果DOM过多,这可能会对性能产生负面影响。
$jqueryobj = $(line);
var text = $jqueryobj.find("a").text();