当前位置: 代码迷 >> ASP.NET >> 请问c#正则提取,继续麻烦各位
  详细解决方案

请问c#正则提取,继续麻烦各位

热度:9805   发布时间:2013-02-25 00:00:00.0
请教c#正则提取,继续麻烦各位。
页面上面有很多a链接,而我只要某个div下面的a,这些a又没有什么特殊的标记。
比如:
<a href="xx.xx">xx</a><a href="xx.xx">xx</a>
<div>不确定字符串<a href="1.xx">xx</a>不确定字符串<a href="2.xx">xx</a>不确定字符串</div>
<p><a href="xx.xx">xx</a><a href="xx.xx">xx</a></p>

我只要1.xx 和2.xx 。


用两条正则 我会,一条的能搞定么 ?

------解决方案--------------------------------------------------------
帮楼主顶,学习中,楼主是不是要写采集器呀
------解决方案--------------------------------------------------------
C# code
            string str = @"<a href=""xx.xx"">xx</a><a href=""xx.xx"">xx</a><div>不确定字符串<a href=""1.xx"">xx</a>不确定字符串<a href=""2.xx"">xx</a>不确定字符串</div><p><a href=""xx.xx"">xx</a><a href=""xx.xx"">xx</a></p>";            Regex reg = new Regex(@"(?is)<div[^>]*?>(?:.*?<a[^>]*?href=(['""\s]?)([^'""\s]+)\1[^>]*?>.*?</a>)*.*?</div>");            foreach (Capture c in reg.Match(str).Groups[2].Captures)                Console.WriteLine(c.Value);            Regex reg1 = new Regex(@"(?is)(?<=<div[^>]*?>(?:(?!</?div).)*)<a[^>]*?href=(['""\s]?)([^'""\s]+)\1[^>]*?>");            foreach (Match m in reg1.Matches(str))                Console.WriteLine(m.Groups[2].Value);
------解决方案--------------------------------------------------------

如果有个test的ID,这样应该是可以的
C# code
Regex re = new Regex("<div[^>]*id=\"test\">[^<]+<a\\s*href=\"([^\"]+)\">[^<]+</a>[^<]+<a\\s*href=\"([^\"]+)\">[^<]+</a>[^<]+</div>", RegexOptions.None);
  相关解决方案