当前位置: 代码迷 >> C# >> 正则表达式,获取<a>标签中 href 和title属性
  详细解决方案

正则表达式,获取<a>标签中 href 和title属性

热度:4   发布时间:2016-05-05 03:31:22.0
正则表达式,获取<a>标签中 href 和title属性,在线等
一个标签类似:<a href=\"play.html?c=frocalxod9b740yx\"  title=\"活动\">
获取a标签中href的值表达式为:
Regex reg = new Regex(@"(?is)<a[^>]+?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
现在希望获取title的值,修改为如下,但是无法匹配,请大神帮忙看看有什么错误:
Regex reg = new Regex(@"(?is)<a[^>]+?href=(['""]?)(?<url>[^'""\s>]+).*?title=""(.*?)""\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
------解决思路----------------------
你最起码应该先要举出1、2个更准确的测试用例,例如
     <a HREF=\"play.html?c=frocalxod9b740yx&title=mms\" data-bind=\"xyz\"   title=\"活动\">
这样的也必须准确找到。

------解决思路----------------------
比如说 title="活动" 这里边在=号前边有个空格,你就没有考虑到吧?!

正规的html分析不用正则,应该用正规的html语法分析框架程序。

正则只是做点随便瞎”玩儿“的业余小练习还行,真正的抓取操作,面对的结构多变、目标网页可能随时更新版本,不能用什么正则来作为工具。
------解决思路----------------------
<a 和 title 之间就不需要那么复杂的匹配了。
------解决思路----------------------
string html = @"<a href=""play.html?c=frocalxod9b740yx""  title=""活动"">";
            string patten = @"<a\s+.*?href=""([^""]*)""\s+.*?title=""([^""]*)"".*?>";
            Regex.Matches(html, patten).Cast<Match>().ToList().ForEach(x=>
                {
                    Console.WriteLine(string.Format("href:{0}  title:{1}", x.Groups[1].Value, x.Groups[2].Value));
                });

------解决思路----------------------

            string text = @"<a href=""play.html?c=frocalxod9b740yx""  title=""活动"">";
            string patten = @"(href
------解决思路----------------------
title)=""([^""]*)";
            Regex.Matches(text, patten).Cast<Match>().ToList().ForEach(x =>
            {
                Console.WriteLine(string.Format("{0}: {1}", x.Groups[1].Value, x.Groups[2].Value));
            });
  相关解决方案