1

文字列からすべての html タグを削除したいのですが、REGX を使用してこれを実現できます。

ただし、文字列内の角括弧 <100> 内に数値が含まれている場合は、それを削除しないでください。

         var withHtml = "<p>hello <b>there<1234></b></p>";
        var withoutHtml = Regex.Replace(withHtml, "\\<[^\\>]*\\>", string.Empty); 

結果:こんにちは

しかし、必要な出力:こんにちは1234

4

2 に答える 2

1

HTML の例は、HTML 以外のタグが含まれているため、有効な HTML ではありません。山かっこをエンコードするつもりだったと思います。

正規表現は HTML の解析には適していないと思います。これを行うには、 HTML Agility Packなどの HTML パーサーを使用することをお勧めします。

次に例を示します。

var withHtml = "<p>hello <b>there&lt;1234&gt;</b></p>";
var document = new HtmlDocument();
document.LoadHtml(withHtml);

var withoutHtml = HtmlEntity.DeEntitize(document.DocumentNode.InnerText);

HtmlAgilityPack NuGet パッケージと System.Xml への参照を追加するだけで機能します。

于 2013-08-29T10:35:10.773 に答える
0

これを1つの正規表現で実行できるかどうか、または他の人が示唆しているように正規表現が本当に正しい方法であるかどうかはわかりません. ほぼそこに到達する簡単な改善は次のとおりです。

Regex.Replace(withHtml, "\\<[^\\>0-9]*\\>", string.Empty);

「hello there<1234>」と表示されたら、すべての角括弧を置き換えるだけです。

于 2013-08-29T10:04:29.233 に答える