例如有这样一段html代码:
<table width=100%  border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'>&nbsp;<a href='Article_Show.asp?ArticleID=1116' title='文档标题:最高人民法院关于规范行政案件案由的通知(法发[2004]2号)
文档作者:佚名
更新时间:2005-11-10 12:15:02
点击次数:1846' target='_blank'>最高人民法院关于规范行政案件案由的通知(法发[2004]…</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2005年11月10日</font>|1846]</td></tr></table><table width=100%  border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'>&nbsp;<a href='Article_Show.asp?ArticleID=672' title='文档标题:关于加强广告执法办案协调工作的指导意见(试行)
文档作者:佚名
更新时间:2004-9-27 11:24:00
点击次数:1128' target='_blank'>山西6部新法规获省人大常委会通过</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2004年9月27日</font>|1128]</td></tr></table><table width=100%  border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'>&nbsp;<a href='Article_Show.asp?ArticleID=506' title='文档标题:我国首部循环经济法规出台
文档作者:佚名
更新时间:2004-9-27 11:22:05
点击次数:1039' target='_blank'>我国首部循环经济法规出台</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2004年9月27日</font>|1039]</td></tr></table>
          </td>
        </tr>
      </table>
 我要获得像<a href=></a>这样格式中的连接地址和title(标题)
我将如何用正则表达式解析呢?

解决方案 »

  1.   

    我不太明白你的问题,我说说我的看法,也不知道是否正确!:)
    用request.querystring.get(id) 可以获得此标题了
      

  2.   

    要根据你取的内容来定 如果简单就用    request.querystring.get(id) 就可以了饿
      
    ------------------------
    个人blog(http://blog.csdn.net/shixin1198)欢迎访问
      

  3.   

    你们可能没有理解我的意思
    我想通过代码获取某个网业上的标题和连接地址,方便用户,用户不想手工输入
    我只知道他的html代码,我要解析出html代码中的<a href></a>里面的href='....' 和 title='...'我要获取....中的内容
      

  4.   

    string pattern = @"<a\s+.*?href=(?<chr>['\"])(?<loc>.*?)\k<chr>.*?>.*?</a>";
      

  5.   

    gameboxer() 兄弟能讲讲这个正则表达式的具体意思么?
    我对正则表达式不是太了解,谢谢
      

  6.   

    trystring yourStr = ..............;
    MatchCollection mc = Regex.Matches(yourStr, @"<a[^>]*?href='(?<url>[^']*?)'[^>]*?title='(?<title>[^']*?)'[^>]*?>", RegexOptions.IgnoreCase);
    foreach(Match m in mc)
    {
         richTextBox2.Text += m.Groups["url"].Value + "\n";          //链接
         richTextBox2.Text += m.Groups["title"].Value + "\n";        //标题
    }
      

  7.   

    象<a这种就是原文了,我就不说了.
    \s就是空格(space),\s+表示在标签和属性间至少有一个空格,多了随便.
    .是任意一个字符,*表示0到多个,*?组合表示此匹配为惰性匹配(遇到后面匹配成功此匹配即使仍旧成功也要结束).*?加上后面的href就是中间可以有0到多个任意字符,知道遇见href标记后停止匹配,其实这里有问题的,就是有些字符比如>是不能出现在属性名中的,这里没判断.
    后面的()是一个组,?<chr>给此组一个名字叫chr,['\"]必须有一个'或"标记属性内容的开始.
    (?<loc>.*?)这个就是连接地址了.\k<chr>逆向引用chr组内容,保证属性的结束标记和开始标记匹配.
    正则比较好学的,.net帮助上介绍的就不错,记在本子上,刚开始可能不理解他的术语,什么原子0宽度断言啊,什么后发断言的.有空就看看,多使用就ok了.
    .net的正则是基于非确定自动机的,虽然不太难,但基本可以解决大多的分析和解释性问题
      

  8.   

    lxcnn(过客)兄弟我也要谢谢你啊!
      

  9.   

    如果考虑href=后面可能为“'”,“"”或者直接接网址,可以这样改下,否则用我上面写的即可string yourStr = ..............;
    MatchCollection mc = Regex.Matches(yourStr, @"<a[^>]*?href=(['""])?(?<url>[^'""\s>]*)\1?[^>]*?title=(['""])(?<title>[^'""]*?)['""][^>]*?>", RegexOptions.IgnoreCase);
    foreach(Match m in mc)
    {
         richTextBox2.Text += m.Groups["url"].Value + "\n";          //链接
         richTextBox2.Text += m.Groups["title"].Value + "\n";        //标题
    }