我要完成一个提取网页信息的程序,其中要用正则表达式提取一些信息,例如:
  一个网页中有以下信息
 文章名称     作者     文摘(是超级链接格式)     全文(是超级链接格式)   页码
要求将上述信息提取出来放到一个数组里,我用了regex的split方法,他会返回一个字符数组,每个元素一次是要提取的信息字符串段。
我写了一个正则表达式,如下:
<br>(?<name>[a-z]+[\d]?)<br>(?<author>[a-z]+[\d]?)</font><a *href="(?<wenzhai>[^"]*)"><文摘></a><a *href="(?<全文>[^"]*)">pdf全文</a><font size=3>------((?<page>[\d]*))
他用来匹配以下内容:
<br>book<br>xingming</font><ahref="http://www.chinainfo.gov.cn/periodical/jsjx2000/008.htm"><文摘></a><a   href="http://www.chinainfo.gov.cn/periodical/jsjx2000//005/0989.htm">PDF全文</a><font size=3>------(897)
用split方法后,数组中的第一、第二和倒数第二个元素都莫名其妙的存储了空格元素,我没有办法消除这一错误。应该怎样做呢?

解决方案 »

  1.   

    string regexStr = @"<br>([^>]+)<br>([^>]+)</font><ahref=""((https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])""><文摘></a><a   href=""((https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])"">PDF全文</a><font size=3>------\((\d+)\)";MatchCollection mc = Regex.Matches(yourStr, regexStr);
    foreach(Match m in mc)
    {
        m.Groups[1].Value; //name
        m.Groups[2].Value; //author
        m.Groups[3].Value; //wenzhai
        m.Groups[5].Value; //全文
        m.Groups[7].Value; //page
    }
      

  2.   

    建议你比较全面的掌握它
    http://www.microsoft.com/china/msdn/library/webservices/asp.net/regexnet.mspx
      

  3.   

    楼主是做不偷程序吧!
    呵呵,用ASP就可以.
      

  4.   

    http://search.csdn.net/Expert/topic/949/949264.xml?temp=.1280481