<. /> (. は b, h1, ... ですが、br, hr, ... ではありません)
私は次のように考えています: Regex.Replace(myString, "<..? />", "") しかし、br と hr を除外する方法がわかりません。
誰でも私を助けることができますか?
どうも!
実行したいタグがわかっている場合は、次のように実行できます。
Regex.Replace(myString, "<(b|p|div|span) />", "")
括弧内では、すべてのオプションがパイプで区切られています。
次のようなことを試してください:
(?:< *)(?!(?:br|hr)) *\w+ *\/ *\>
一致させたくないタグを br|hr の部分 ('|' で区切ります) に追加します。
次のようなパターンを使用して、それらを一致させて置き換えます。
<(TAG1|TAG2|TAG3|...)\s*/?>
(TAG1|TAG2|TAG3|...)
パイプで区切られた、処理するすべてのタグはどこにありますか。HTML タグでは大文字と小文字が区別されないため、正規表現でも大文字と小文字を区別しないように指定してください。たとえば、リストした 2 つだけを認識するには、次のような正規表現を作成できます。
var exp = new Regex("<(b|h1)\s*/?>", RegexOptions.IgnoreCase);
使い方:
\s*
0 個以上の空白文字を認識します。(HTML 標準ではタグ名の前に空白を使用できないため、正規表現の開始時にこれらの 1 つを使用する必要はありません。)/?
オプションで「/」に一致します。/
(これは、HTML 仕様では必ずしも in empty タグが必要とされていなかったため、 in empty タグを使用しない HTML を柔軟に処理するためのものです。)次のようにタグを削除するために使用できます。
var strippedText = exp.Replace(input, String.Empty);