0

重複の可能性:
C#正規表現を使用してHTMLタグを削除する

HTMLファイルのコンテンツのみを返すコードを書き込もうとしています。私が考えた最良の方法は、<..>括弧内のすべての要素を削除するか、>...<括弧内のすべてのテキストのリストを作成することです。私は正規表現にかなり慣れていませんが、それが正しい方法であると確信しています。

これが私が試したコードです

        Regex reg = new Regex(@"<.*>");
        file = reg.Replace(file, ""); 

テキストのブロックの前に<...>が1つしかない限り、これは機能します。<...> <...>のように、これらの要素が2つ以上順番に含まれているファイルで、見つかったテキストの削除を開始するだけです。誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

0

正規表現は定期的に貪欲です(見つけることができる最長の文字列と一致します)。探している言語に応じて、+を確認してみてください。また *?演算子、それは最短の一致を試みます。それ以外の場合は、別の正規表現を作成する必要があります。

于 2012-09-25T19:18:14.230 に答える
0

さて、あなたが得ている予期しない振る舞いは、あなたの正規表現が貪欲だからです

正規表現をに変更した場合

    Regex reg = new Regex(@"<.*?>");
    file = reg.Replace(file, ""); 

あなたはあなたが期待するものを手に入れるでしょう。

また、正規表現はHTMLに多く含まれるネストを処理しないことを知っておいてください。特定の形式のHTMLで非常に具体的なものと一致させようとしているのでない限り、正規表現を使用してHTMLを解析することは避けます。

于 2012-09-25T19:18:45.353 に答える