【发布时间】:2020-03-26 01:32:07
【问题描述】:
给定一个包含'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 吗?
【问题讨论】:
-
在
()中包裹.*(注意,如果字符串中有多个<a></a>对,您实际上应该使用.*?),您可以在第二个元素中获得它的匹配项tok数组,如果你使用[atag,tok] = regexp(line,'<(\w+).*>(.*?)</\1>','match','tokens'); -
extractHTMLText有用吗?你只想要正则表达式解决方案吗? -
@DavidS,
extractHTMLText是在 2018a 中推出的,而我正在运行 2016a。
标签: html regex matlab hyperlink