• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#でタグを削除する方法)

C#でタグを削除する方法

このQ&Aのポイント
  • C#でhtmlファイルからタグを削除する方法を解説します。
  • 正規表現を使用して、大文字で書かれたタグも削除することができます。
  • StreamReaderとStringBuilderを使用して、htmlファイルを読み込み、タグを削除する方法を紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakuhat
  • ベストアンサー率61% (11/18)
回答No.1

<DIV ってなってますけど <DIV   align="center"> みたいに改行が入っているタグでしょうか? 1行ずつでないなら <([^>]|\n)*>で置換できます。 1行ずつやるなら (<[^>]*>|<[^>]*$|^[^<]*>) でしょうかね。 ただし両方ともタグ以外に「<」、「>」が使われていないことを前提にしてますけど・・・ もっといい方法があるかもしれません。

nirusu
質問者

お礼

1行ずつ出ない方法で全てのタグが削除されました。 ありがとうございました。後は以外の文が取り除ければ OKなんですが・・・。 解りましたら宜しくお願いします。 BODY { FONT-FAMILY: ヒラギノ明3-Leaf外字付等幅,"MS P明朝"}B { FONT-FAMILY: ヒラギノ角5-Leaf外字付等幅,"MS Pゴシック"}H2 { FONT-FAMILY: ヒラギノ角5-Leaf外字付等幅,"MS Pゴシック"}.oubun { FONT-FAMILY: Century,Times New Roman,"MS P明朝"}RUBY { WORD-SPACING: -5px}

nirusu
質問者

補足

残ってしまうタグは、<DIV style="MARGIN-LEFT: 1em; TEXT-INDENT: -1em"> や <SPAN style="BACKGROUND: #afafaf"> や <FONT color=red> が残っています。

その他の回答 (2)

  • sakuhat
  • ベストアンサー率61% (11/18)
回答No.3

<style(※)*</style> ※「に</style>を含まない」正規表現を入れる で置換くらいしか自分には思いつかないです・・・ 文字列を含まない正規表現 http://www.axis.t.u-tokyo.ac.jp/~shunak/memo/regc.html きちんとやるにはやはりBLUEPIXYさんの言うようにしなくてはなりませんね。 私は以前にブラウザのタグをすべて取得して属性などの変更をする ツールを作ったときはMSHTMLを使いました。 VC#のやり方ですけどこちらをどうぞ http://www.microsoft.com/japan/msdn/academic/Articles/fun/02/ もっと詳しいサイトがあったのですが そのサイトがどこにあるかわからなくなってしまいました・・・ あと、気になったのですが1行ずつ読み込んで改行コードが消えているので text.Append(A);の後に text.Append("\n");を入れたほうがよいと思います。 改行無しでよいならそれでも構わないのですけど。

参考URL:
http://www.microsoft.com/japan/msdn/academic/Articles/fun/02/
nirusu
質問者

お礼

いろいろとアドバスありがとうございました。 今後とも宜しくお願いします。

nirusu
質問者

補足

A = Regex.Replace(A,@">",">\r\n"); A = Regex.Replace(A,@"<(([^>]|\n)*)>",""); として改行するようにはしてます。"\r\n" としないと改行されないのでこうしてます.

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

大文字で書かれていることではなくて、 >が来る前に改行しているからだと思います。 タグのパーサをちゃんとしないで質問文のような簡略な方法では、一般的なHTMLではうまくタグを削除することはできないと思います。