2016-03-05 63 views
0

对于examle:C#:正则表达式如何匹配特定的div关闭标签,但最后一个关闭标签?

<div id="outer"> 
    <div id="a"> 
     <div class="b"> 11111111111</div> 
     <div class="b"> 22222222222222</div> 
    </div> 
</div> 

现在我想匹配ID的元素是a,并替换为空,但我发现我不能,因为id="a"不是外层div。 这是我的C#代码,它将匹配最后的标记。

Regex regex = new Regex(@"<div id=""a([\s\S]*) (<\/[div]>+)"); 
+2

我不知道你正在尝试做的,但它似乎像[HTML Agiligy包] (https://htmlagilitypack.codeplex.com/)比正则表达式更适合。 – Domysee

+0

不能使用正则表达式的HTML - 见http://stackoverflow.com/a/1732454/259769 – Enigmativity

+0

@Enigmativity谢谢!你解决了我的问题 – MapleStory

回答

1

试试这个:

var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 

var divs = doc.DocumentNode.Descendants().Where(x => x.Name == "div" && x.Id == "a"); 

foreach (var div in divs.ToArray()) 
{ 
    div.InnerHtml = ""; 
} 

var result = doc.DocumentNode.OuterHtml; 

result我得到的是:

<div id="outer"> 
    <div id="a"></div> 
</div>