私は時間が足りないので、具体的には以下のような文字列を抽出したいと思っていました. 問題は、タグが形式ではないことです<a> data </a>
。
与えられた、
s = <em style="font-size:medium"> 5,888 </em>
matlabで5,888だけを抽出する方法は?
助けてくれてありがとう。私は基本的に、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);
ここ、またはここ、またはここに役立つ情報が見つかります。これらはすべて 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