プロが教える店舗&オフィスのセキュリティ対策術

htmlファイルをtextBoxに読み込んで、その中にあるタグのみを正規表現で削除したいです。

FileStream file = File.Open
( @"c:\test.html", FileMode.Open );

Encoding enc = Encoding.GetEncoding("Shift_JIS");
reader = new StreamReader( file ,enc);
StringBuilder text = new StringBuilder();

while(reader.Peek() != -1)
{
  string A = reader.ReadLine().ToString();

  A = Regex.Replace(A,@"<(([^>]|\n)*)>","");
  text.Append(A);
}

textBox1.Text = text.ToString();

とすると、ある程度のタグは削除できるんですが、<DIV
などの大文字で書かれたタグが削除できませんでした。
解る方いらっしょいましたら宜しくお願いします。

A 回答 (3件)

<DIV ってなってますけど


<DIV
  align="center">
みたいに改行が入っているタグでしょうか?

1行ずつでないなら <([^>]|\n)*>で置換できます。
1行ずつやるなら (<[^>]*>|<[^>]*$|^[^<]*>) でしょうかね。

ただし両方ともタグ以外に「<」、「>」が使われていないことを前提にしてますけど・・・
もっといい方法があるかもしれません。

この回答への補足

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

補足日時:2005/05/25 11:42
    • good
    • 0
この回答へのお礼

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}

お礼日時:2005/05/25 12:18

<style(※)*</style>


※「に</style>を含まない」正規表現を入れる

で置換くらいしか自分には思いつかないです・・・

文字列を含まない正規表現
http://www.axis.t.u-tokyo.ac.jp/~shunak/memo/reg …

きちんとやるにはやはりBLUEPIXYさんの言うようにしなくてはなりませんね。
私は以前にブラウザのタグをすべて取得して属性などの変更をする
ツールを作ったときはMSHTMLを使いました。

VC#のやり方ですけどこちらをどうぞ
http://www.microsoft.com/japan/msdn/academic/Art …

もっと詳しいサイトがあったのですが
そのサイトがどこにあるかわからなくなってしまいました・・・

あと、気になったのですが1行ずつ読み込んで改行コードが消えているので
text.Append(A);の後に
text.Append("\n");を入れたほうがよいと思います。
改行無しでよいならそれでも構わないのですけど。

参考URL:http://www.microsoft.com/japan/msdn/academic/Art …

この回答への補足

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

補足日時:2005/05/25 19:46
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/27 10:48

大文字で書かれていることではなくて、


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!