我时间紧迫,特别想提取下面的字符串。问题是标记的格式不是<a> data </a>
。
鉴于,
s = <em style="font-size:medium"> 5,888 </em>
如何在matlab中提取出5,888个?
答案 0 :(得分:3)
你会发现有用的信息here,或here或here,所有这些都是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);