嗨,我对正则表达式很陌生,我需要一些帮助来写这个或者至少让我开始。
我想获取页面上的所有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>
答案 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://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx