2012-07-20 44 views
0

嗨我很新的正则表达式,我需要一些帮助写这个或至少让我开始。找到与ID为div

我想获得页面上所有的div,并把它们放到一个字符串集合

有可能是<和DIV和</DIV>感谢之间的空间

我之间的空间已经尝试了htmlaggilitypack但多数民众赞成遇到的问题,为什么我会这样

Dim reg As Regex = New Regex("<div(.*?)> </div") 

Dim matches As string() = reg.Matches(htmlCode) 




<div id="out"> 

    <div id="one"> 
     < div id="b"></div> 
     < div id="d"></div> 
    </div> 

    <div  id="two"> 
     <h1>fsdfsdf</h1> 
     < div id="a"><div id="a"></div></div> 
    </div > 

</div> 
+7

不要使用正则表达式解析(X/HT/XHT)ML。你有什么问题与htmlagilitypack? – Tharwen 2012-07-20 09:00:24

+1

[Obligatory link](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – dreamlax 2012-07-20 09:02:37

+0

我无法获得ID您是否有任何其他解决方案除了HTML敏捷包 – 2012-07-20 09:05:52

回答

2
它匹配所有

<div id='d'> 
    dsfdsfs 

    dsfdfd 

</div> 
<div>dave </div> 
<div>home </ div> 
<p></p> 

然而,

如果您想通过ID值返回divs的集合,那么您可以在HMTL敏捷包中使用以下内容:

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<HtmlAgilityPack.HtmlNode> divs = GetDivsInner(); 

    foreach (var node in divs) 
    { 
      Response.Write("Result: " + node.InnerHtml.ToString()); 
    } 

} 

public List<HtmlAgilityPack.HtmlNode> GetDivsInner() 
{ 
     HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 

     doc.OptionFixNestedTags = true; 
     doc.Load(requestData("YOUR URL HERE")); 

     var divList = doc.DocumentNode.Descendants("div").Where(d => d.Attributes.Contains("id") && d.Attributes["id"].Value.Contains("YOUR ID VALUE")).ToList(); 

     return divList; 
} 

public StreamReader requestData(string url) 
{ 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
     HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 

     StreamReader sr = new StreamReader(resp.GetResponseStream()); 

     return sr; 
}