日期:2014-05-18  浏览次数:20489 次

请教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);