java htmlのタグを置換する方法

はてなフォトライフからの出力をどうやって処理をすればよいのか迷ったので書いておきます。

やりたいことははてなフォトライフから出力される埋め込みタグからURLだけを抽出すること。


要は、こいつを

<a href="https://f.hatena.ne.jp/asakanow/20200814203112"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/asakanow/20200814/20200814203112.jpg" alt="20200814203112"></a>

こうしたい

https://cdn-ak.f.st-hatena.com/images/fotolife/a/asakanow/20200814/20200814203112.jpg


10分くらい抽出方法を迷ったあげくできたのがこれ。

string one;
//複数のタグを切り離して配列に入れる
String[] arr_data = data.split("\n");

for(int i = 0; i <arr_data.length;i++){
//処理をしやすいよう一度変数に格納
  one = arr_data[i];
//<a ~~ src="の文字列を削除(最長)
  one = one.replaceFirst("<a" + ".+" + "src=\"", "");
//" ~~ >の文字列を削除
  one = one.replaceFirst("\"" + ".+" + ">", "");
//配列に戻す
  arr_data[i] = one;
}

dataに値(はてなフォトライフのブログに埋め込みの値)を格納してやるとarr_data[]の配列に画像のURLだけが入って帰ってくる。



最初の赤色の文字列を1つ目のone.replaceFirstで削除して2つ目の赤色の文字列を2つ目のone.replaceFirstで削除。汎用性は一切ないけど仕組みは単純。

<a href="https://f.hatena.ne.jp/asakanow/20200814203112"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/asakanow/20200814/20200814203112.jpg" alt="20200814203112"></a>


これだと汎用性がなくてこれ以外の抽出ができない。タグと要素を入力すれば要素の中身を取り出せるように改良したい!


以上