找到id为div的div

时间:2012-07-20 08:53:24

标签: regex vb.net

嗨,我对正则表达式很陌生,我需要一些帮助来写这个或者至少让我开始。

我想获取页面上的所有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>

2 个答案:

答案 0 :(得分:2)

如果您想通过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;
}

答案 1 :(得分:1)

尝试

<\s*div.*>(.|\n)*<\s*/\s*div>  

作为你的正则表达式模式。已经使用以下内容对其进行了测试,它与所有

匹配
<div id='d'>
  dsfdsfs

  dsfdfd

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

但是如果你想调整一下,互联网上有一些很棒的工具来测试你的正则表达式

http://www.regextester.com/

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx