- ベストアンサー
C#でタグを削除する方法
- C#でhtmlファイルからタグを削除する方法を解説します。
- 正規表現を使用して、大文字で書かれたタグも削除することができます。
- StreamReaderとStringBuilderを使用して、htmlファイルを読み込み、タグを削除する方法を紹介します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
<DIV ってなってますけど <DIV align="center"> みたいに改行が入っているタグでしょうか? 1行ずつでないなら <([^>]|\n)*>で置換できます。 1行ずつやるなら (<[^>]*>|<[^>]*$|^[^<]*>) でしょうかね。 ただし両方ともタグ以外に「<」、「>」が使われていないことを前提にしてますけど・・・ もっといい方法があるかもしれません。
その他の回答 (2)
- sakuhat
- ベストアンサー率61% (11/18)
<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");を入れたほうがよいと思います。 改行無しでよいならそれでも構わないのですけど。
お礼
いろいろとアドバスありがとうございました。 今後とも宜しくお願いします。
補足
A = Regex.Replace(A,@">",">\r\n"); A = Regex.Replace(A,@"<(([^>]|\n)*)>",""); として改行するようにはしてます。"\r\n" としないと改行されないのでこうしてます.
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
大文字で書かれていることではなくて、 >が来る前に改行しているからだと思います。 タグのパーサをちゃんとしないで質問文のような簡略な方法では、一般的なHTMLではうまくタグを削除することはできないと思います。
お礼
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}
補足
残ってしまうタグは、<DIV style="MARGIN-LEFT: 1em; TEXT-INDENT: -1em"> や <SPAN style="BACKGROUND: #afafaf"> や <FONT color=red> が残っています。