有一篇网页源代码,段落是比较规律的。我提取了其中一段,别的都和这一段基本相似。如下:xxxxxxxx随机内容<a href="read-htm-tid-8012348(需要提取8012348这个可变数字,前面的a href-read-htm-tid-字符串是固定的,可以用于定位).html" id="a_ajax_8012348(无用数据)">一只绣眼文章标题(需要提取该文字)</a></span></h3> <span class='gray tpage'>( +9352 )</span>  <img src="images/wind/file/new.gif" align="absmiddle" /> <span class="tpage">....中间很多无用数据.......d-8012348-page-11-fpage-1.html">11</a></span> </span> </td> <td class="tal y-style"><a href="u-htm-action-show-uid-278024.html" class="bl">老海人名(需要提取该文字)</a> <div class="f10 gray2">2012-10-12(需要提取该文字)</div></td> <td class="tal y-style f10"><span class="s8(这里是固定的,可以定位)">107(需要提取该数字)</span> / 795(需要提取该数字)</td>随机内容xxxxxxxx我需要提取6个关键的地方,分别是:8012348
一只绣眼文章标题
老海人名
2012-10-12
107
795注意:
1)源代码中,795和斜杠前面,都是有空格的,并非我故意加入的空格。
2) 2012-10-12字符串前面的<div class="f10 gray2">是固定的,可以用于定位。
3)要求必须用正则,因为我要提取很大一段网页源代码类似的。不用正则提取不出来。我用的正则格式如下:
foreach (Match m in Regex.Matches(zifuchuan, "正则")
{
m.Groups[1].Value.ToString();
}

解决方案 »

  1.   

    string zifuchuan = @"xxxxxxxx随机内容<a href=""read-htm-tid-8012348.html"" id=""a_ajax_8012348"">一只绣眼文章标题</a></span></h3> <span class='gray tpage'>( +9352 )</span> <img src=""images/wind/file/new.gif"" align=""absmiddle"" /> <span class=""tpage"">....中间很多无用数据.......d-8012348-page-11-fpage-1.html"">11</a></span> </span> </td> <td class=""tal y-style""><a href=""u-htm-action-show-uid-278024.html"" class=""bl"">老海人名</a> <div class=""f10 gray2"">2012-10-12</div></td> <td class=""tal y-style f10""><span class=""s8"">107</span> / 795</td>随机内容xxxxxxxx";
    foreach (Match m in Regex.Matches(zifuchuan, @"(?is)<a href=""read-htm-tid-\d+\.html""[^>]*>(.*?)</a>.+?<a href=""u-htm-action-show-uid-\d+\.html"" class=""bl"">(.*?)</a>\s*<div class=""f10 gray2"">(.*?)</div>.*?<span class=""s8"">(\d+)</span>\s*/\s*(\d+)</td>"))
    {
    Response.Write(m.Groups[1].Value + "<br/>");
    Response.Write(m.Groups[2].Value + "<br/>");
    Response.Write(m.Groups[3].Value + "<br/>");
    Response.Write(m.Groups[4].Value + "<br/>");
    Response.Write(m.Groups[5].Value + "<br/>");
    }
    一只绣眼文章标题
    老海人名
    2012-10-12
    107
    795 
      

  2.   

     string html = @"xxxxxxxx随机内容<a href=""read-htm-tid-8012348.html"" id=""a_ajax_8012348"">一只绣眼文章标题</a></span></h3> <span class='gray tpage'>( +9352 )</span> <img src=""images/wind/file/new.gif"" align=""absmiddle"" /> <span class=""tpage"">....中间很多无用数据.......d-8012348-page-11-fpage-1.html"">11</a></span> </span> </td> <td class=""tal y-style""><a href=""u-htm-action-show-uid-278024.html"" class=""bl"">老海人名</a> <div class=""f10 gray2"">2012-10-12</div></td> <td class=""tal y-style f10""><span class=""s8"">107</span> / 795</td>随机内容xxxxxxxx";
            foreach (Match m in Regex.Matches(html , @"(?is)<a\s*href=""read-htm-tid-(?<num>\d+)\.html""[^>]*?>(?<acontent>.*?)</a>.+?<a\s*href=""u-htm-action-show-uid-\d+\.html""[^>]*?class=""bl"">(?<bcontent>.*?)</a>\s*<div\s*class=""f10 gray2"">(?<divcontent>.*?)</div>.*?<span\s*class=""s8"">(?<snum>\d+)</span>\s*/\s*(?<snum1>\d+)</td>"))
            {
                Response.Write(m.Groups["num"].Value + "<br/>");
                Response.Write(m.Groups["acontent"].Value + "<br/>");
                Response.Write(m.Groups["bcontent"].Value + "<br/>");
                Response.Write(m.Groups["divcontent"].Value + "<br/>");
                Response.Write(m.Groups["snum"].Value + "<br/>");
                Response.Write(m.Groups["snum1"].Value + "<br/>");
            }
    /*
    8012348
    一只绣眼文章标题
    老海人名
    2012-10-12
    107
    795
    */