HTMLのタグ属性で指定された特定文字列を置換する
HTMLで、開始 < と終了 > に囲まれた特定の文字列を別の文字に書き替えたいのですが、思う通りに動かなくて困っており、質問させていただきます。
例えば以下の2行のHTMLがあったとします。
<font color="red">赤は英語でredです。</font>
<span style="color:red;">赤は英語でredです。</span>
このHTMLで、タグの属性として使われている「color="red"」と「style="color:red;"」の部分だけ「red」を「black」に変更したいのです。
(文字列として使われている「英語でredです」の部分はそのまま)
秀丸やさくらエディタで正規表現を使って検索すると、
<.+?red.+?>
で検索できましたがJavaでは検索ができません・・・。
コード:
String strHtml = "<html><body><font color=\"red\">赤は英語でredです。</font><span style=\"color:red;\">赤は英語でredです。</span></body></html>";
Pattern pattern = Pattern.compile( "<.+?red.+?>", Pattern.DOTALL ); // 正規表現で検索
Matcher matcher = pattern.matcher( strHtml );
while( matcher.find() ){
System.out.println( "res=" + matcher.group( 0 ) );
}
出力結果:
res=<html><body><font color="red">
res=</font><span style="color:red;">
res=<html><body><font color="red">赤は英語でredです。</font><span style="color:red;">赤は英語でredです。</span></body></html>
エディタと同じように<font color="red">と<span style="color:red;">が取りたいのですが・・・、考え方もしくは正規表現が間違っているのでしょうか?
お分かりの方がいましたら御助力いただけたら助かります。
よろしくお願いします。