私は文字列を持っています:
string hmtl = "<DIV><B> xpto </B></DIV>
と のタグを削除する必要が <div>
あり</DIV>
ます。の結果:<B> xpto </B>
多くのhtml<DIV> and </DIV>
タグを削除せずに、<B> xpto </B>
.
div タグを削除するだけの場合は、div
タグとその属性が取得されます。
var html =
"<DIV><B> xpto <div text='abc'/></B></DIV><b>Other text <div>test</div>"
var pattern = "@"(\</?DIV(.*?)/?\>)"";
// Replace any match with nothing/empty string
Regex.Replace(html, pattern, string.Empty, RegexOptions.IgnoreCase);
結果
<B> xpto </B><b>Other text test
htmlagilitypackを使用する
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<html>yourHtml</html>");
foreach(var item in doc.DocumentNode.SelectNodes("//div"))// "//div" is a xpath which means select div nodes that are anywhere in the html
{
item.InnerHtml;//your div content
}
Bタグのみご希望の方は..
foreach(var item in doc.DocumentNode.SelectNodes("//B"))
{
item.OuterHtml;//your B tag and its content
}
使用Regex
:
var result = Regex.Replace(html, @"</?DIV>", "");
更新しました
あなたが言及したように、このコードにより、正規表現は他のすべてのタグを削除しますB
var hmtl = "<DIV><B> xpto </B></DIV>";
var remainTag = "B";
var pattern = String.Format("(</?(?!{0})[^<>]*(?<!{0})>)", remainTag );
var result = Regex.Replace(hmtl , pattern, "");
html = Regex.Replace(html,@"<*DIV>", String.Empty);