4

私は時間が足りないので、具体的には以下のような文字列を抽出したいと思っていました. 問題は、タグが形式ではないことです<a> data </a>

与えられた、

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

matlabで5,888だけを抽出する方法は?

4

2 に答える 2

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);
于 2012-11-05T08:26:29.420 に答える
3

ここ、またはここ、またはここに役立つ情報が見つかります。これらはすべて 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
于 2012-11-05T06:52:33.367 に答える