一段文本中含有大量类似于下面的字符串[赵毅衡]<a href="readart.php?class=khs&an=20051229154817"><b>二十世纪中国的未来小说</b></a> 发布于[2005-12-29 15:48:17]<br>请帮助用正则从文本中提取需要的内容:作者/网址/标题/时间[作者]<a href="网址"><b>标题</b></a> 发布于[时间]<br>

解决方案 »

  1.   

    Regex reg=new Regex(@"\[(?<author>[^]]+?)\]<a\s+href=""(?<url>[^>""]+?)"">\s*<b>(?<tital>[^<]+?)</b>\s*?</a>\s*?发布于\[(?<time>[^]]+?)\]");
    foreach(Match m in reg.Matches(yourStr))
    {
    string 作者=m.Groups["author"].Value;
    string url=m.Groups["url"].Value;
    string 标题=m.Groups["tital"].Value;
    string time=m.Groups["time"].Value;   
    }
      

  2.   

    最简单的方法:[(.*?)]<a href="(.*?)"><b>(.*?)</b></a> 发布于[(.*?)]<br>
      

  3.   

    sorry,原来提供的字符串有个错误,应该是下面这样:[赵毅衡]<a href="readart.php?class=khs&an=20051229154817">二十世纪中国的未来小说</a> 发布于[2005-12-29 15:48:17]<br>也就是没有 <b> </b>请问怎么办?
      

  4.   

    string yourStr = ......;
    MatchCollection mc = Regex.Matches(yourStr, "\\[(?<author>.+?)\\]<a\\s+href=\"(?<url>.+?)\">(<b>)?(?<title>.+?)(</b>)?</a>.+?\\[(?<datetime>.+?)\\]", RegexOptions.IgnoreCase);
    foreach(Match m in mc)
    {
        m.Groups["author"].Value;//作者
        m.Groups["url"].Value;//网址
        m.Groups["title"].Value;//标题
        m.Groups["datetime"].Value;//时间
    }
    有没有<b></b>都一样。