1

文字列内のすべての空の HTML タグを検索したい、例えば:

<div></div>
<span>test</span>
<a></a>

その文字列内のすべての空のタグにスペースまたは文字を追加します。

<div>something</div>
<span>test</span>
<a>something</a>

すべての空のタグに一致する正規表現がありますが、タグを置き換える最善の方法がわかりません。

正規表現:

<(\w+)(?:\s+\w+="[^"]+(?:"\$[^"]+"[^"]+)?")*>\s*</\1>
4

3 に答える 3

3

HtmlAgilityPackを使用する

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
foreach(HtmlNode node in doc.DocumentElement.SelectNodes("//*").Where(x=>x.InnerText==""))
{
       node.ParentNode.ReplaceChild(HtmlTextNode.CreateNode(input), node);
}
doc.Save(yourFile);
于 2013-07-26T09:07:03.093 に答える
1

説明

正規表現を介してこれを処理することはおそらく最善の方法ではありませんが、「HTMLAgilityPack のインストールは許可されていません」などの正規表現を使用する理由がある可能性があるため、この表現は次のようになります。

  • 単純に開始タグの後に終了タグが続くすべてのタグを検索します
  • 正規表現を使用した HTML でのパターン マッチングを困難にするエッジ ケースの多くを回避します。

正規表現:(<(\w+)(?=\s|>)(?:[^'">=]*|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>)(<\/\2>)

と置換する:$1~~~NewValue~~~$3

ここに画像の説明を入力

ライブデモ

サンプルテキスト

最初の行にはいくつかの非常に難しいエッジケースがあることに注意してください

<a onmouseover=' str=" <a></a> " ; if ( 6 > 4 ) { funDoSomething(str); } '></a>
<div></div>
<span>test</span>
<a></a>

置換後のテキスト

<a onmouseover=' str=" <a></a> " ; if ( 6 > 4 ) { funDoSomething(str); } '>~~~NewValue~~~</a>
<div>~~~NewValue~~~</div>
<span>test</span>
<a>~~~NewValue~~~</a>
于 2013-07-26T14:07:12.453 に答える
0

Html 解析にはHtml Agility Packを使用してください。正規表現は使用できません

于 2013-07-26T09:00:08.807 に答える