1

<. /> (. は b, h1, ... ですが、br, hr, ... ではありません)

私は次のように考えています: Regex.Replace(myString, "<..? />", "") しかし、br と hr を除外する方法がわかりません。

誰でも私を助けることができますか?

どうも!

4

3 に答える 3

3

実行したいタグがわかっている場合は、次のように実行できます。

Regex.Replace(myString, "<(b|p|div|span) />", "") 

括弧内では、すべてのオプションがパイプで区切られています。

于 2012-08-10T14:26:05.543 に答える
3

次のようなことを試してください:

(?:< *)(?!(?:br|hr)) *\w+ *\/ *\>

一致させたくないタグを br|hr の部分 ('|' で区切ります) に追加します。

于 2012-08-10T14:34:08.623 に答える
1

次のようなパターンを使用して、それらを一致させて置き換えます。

<(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);
于 2012-08-10T14:28:34.277 に答える