如何使用regexp在Matlab中解析HTML标签?

时间:2012-11-05 06:42:18

标签: html regex matlab tags

我时间紧迫,特别想提取下面的字符串。问题是标记的格式不是<a> data </a>

鉴于,

s = <em style="font-size:medium"> 5,888 </em>

如何在matlab中提取出5,888个?

2 个答案:

答案 0 :(得分:3)

你会发现有用的信息here,或herehere,所有这些都是google-first-page结果,并且比在这里提出问题要快。

无论如何,快速的方式:你可以过滤<>符号:

>> s = '<em style="font-size:medium"> 5,888 </em> <sometag> test </sometag>'    
>> a = regexp(s, '[<>]');    
>> s( cell2mat(arrayfun(@(x,y)x:y, a(2:2:end-1)+1, a(3:2:end)-1, 'uni',false)) )

ans = 

   5,888 test

或者,稍微更健壮,更清洁,用空白替换任何标签(包括标签)之间的所有内容:

>> s = regexprep(s, '<.*?>', '')
ans = 

   5,888 test

答案 1 :(得分:3)

感谢大家的帮助。我基本上试图在Matlab上获得美国郡的人口。我以为我会分享我的代码,虽然不是最优雅的。可能会帮助一些灵魂。 :)

county = 'morris';
state = 'ks';

county = strrep(county, ' ' , '+');
str = sprintf('https://www.google.com/search?&q=population+%s+%s',county,state);
s = urlread(str);
pop = regexp(s,'<em[^>]*>(.*?)</em>', 'tokens');
pop = char(pop{:});
pop = strrep(pop, ',' , '');
pop = str2num(pop);