我想从网页的源代码中找出需要的字段,本人超级菜鸟,自己按照网友写的改出来一段,但是运行没有结果。请高手帮我瞧瞧,多谢多谢!
网页内容(节选需要的一段):
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"  style="width: 80%; line-height:25px;" align="center">
<tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_Label1" class="subHead">土地使用权人:</span></td>
        <td width="80%" bgcolor="#FFFFFF" style="padding-left:8px;" >
      <span id="ess_ctr7826_LandCertificateInfoView_lblLandUser" class="normal" style="width:100%;">北京市电力公司</span></td>
  </tr>
    <tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_Label2" class="subHead">土地坐落:</span></td>
        <td width="80%" bgcolor="#FFFFFF" style="padding-left:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_lblLandPosition" class="normal" style="width:100%;">北京市石景山区杏石口变电站(新杏石口村东侧)</span></td>
     
    </tr>
    <tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_Label3" class="subHead">土地面积:</span></td>
        <td width="80%" bgcolor="#FFFFFF" style="padding-left:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_lblLandArea" class="normal" style="width:100%;">7871.55 (平方米)</span></td>
      
    </tr>
    <tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_Label5" class="subHead">使用权类型:</span></td>
        <td width="80%" bgcolor="#FFFFFF" style="padding-left:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_lblLandUseType" class="normal" style="width:100%;">划拨</span></td>
      
    </tr>
    <tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_Label6" class="subHead">土地证号:</span></td>
        <td width="80%" bgcolor="#FFFFFF" style="padding-left:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_lblLandNumber" class="normal" style="width:100%;">京石2011划00061</span></td>
      
    </tr>    
  <tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;">
      <span id="ess_ctr7826_LandCertificateInfoView_Label7" class="subHead">发布时间:</span></td>
        <td width="80%" bgcolor="#FFFFFF" style="padding-left:8px;" >
      <span id="ess_ctr7826_LandCertificateInfoView_lblLandGData" class="normal" style="width:100%;">2011年09月06日</span></td>
  </tr> 
  <tr>
        <td width="20%" align="right" bgcolor="#FFFFFF" style="padding-right:8px;" colspan="2">
      <span id="ess_ctr7826_LandCertificateInfoView_lblViewNumber" class="subHead">浏览次数: 334</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>        
  </tr> 
  <tr>
        <td width="20%" align="center" bgcolor="#FFFFFF" style="padding-right:8px;" colspan="2">
            <a id="ess_ctr7826_LandCertificateInfoView_lbtnReturn" class="CommandButton" href="javascript:__doPostBack('ess$ctr7826$LandCertificateInfoView$lbtnReturn','')">返 回</a>
      </td>        
  </tr> 
</table>
我的c#代码:
            Regex reg = new Regex(@"(?is)ess_ctr7826_LandCertificateInfoView_lblLandUser[^>]*>(?<CLandUser>[^<]*)(?:(?!ess_ctr7826_LandCertificateInfoView_lblLandPosition).)*ess_ctr7826_LandCertificateInfoView_lblLandPosition[^>]*>(?<CLandPosition>[^<]*)(?:(?!ess_ctr7826_LandCertificateInfoView_lblLandArea).)*ess_ctr7826_LandCertificateInfoView_lblLandArea[^>]*>(?<CLandArea>[^<]*)(?:(?!ess_ctr7826_LandCertificateInfoView_lblLandUseType).)*ess_ctr7826_LandCertificateInfoView_lblLandUseType[^>]*>(?<CLandUseType>[^<]*)(?:(?!ess_ctr7826_LandCertificateInfoView_lblLandNumber).)*ess_ctr7826_LandCertificateInfoView_lblLandNumber[^>]*>(?<CLandNumber>[^<]*)(?:(?!ess_ctr7826_LandCertificateInfoView_lblLandGData).)*ess_ctr7826_LandCertificateInfoView_lblLandGData[^>]*>(?<CLandGDate>[^<]*)");
            MatchCollection mc = reg.Matches(SHtml);
            foreach (Match m in mc)
            {
                Console.WriteLine(m.Groups["CLandUser"].Value);
                Program.SProject += m.Groups["CLandUser"].Value + "\n";
                Program.SProject += m.Groups["CLandPosition"].Value + "\n";
                Program.SProject += m.Groups["CLandArea"].Value + "\n";
                Program.SProject += m.Groups["CLandUseType"].Value + "\n";
                Program.SProject += m.Groups["CLandNumber"].Value + "\n";
                Program.SProject += m.Groups["CLandGDate"].Value + "\n";
            }

解决方案 »

  1.   

    Regex reg = new Regex(@"(?is)(?<=<span id=""ess_ctr7826_LandCertificateInfoView[^>]*?>).*?(?=</span>)");
    结果如下,自己组织吧
    /*
    土地使用权人:
    北京市电力公司土地坐落:
    北京市石景山区杏石口变电站(新杏石口村东侧)
    土地面积:
    7871.55 (平方米)
    使用权类型:
    划拨
    土地证号:
    京石2011划00061
    发布时间:
    2011年09月06日
    浏览次数: 334
    */
      

  2.   

    不一定要很复杂的正则,根据你这个需求 Linq To XML 就可以方便的做到。先用简单的正则将整个 <table> 取出来,然后用 XElement 来做。这样就可以方便的取到 <span> 和 <a> 的值。
      

  3.   

    (?i)<span\b(?>(?:(?!\bid\b).)*)id\s*=\s*(?<ko>["']?)ess_ctr7826_LandCertificateInfoView_lbl(?:Land(?:User?(?:Type)?|GData|Position|Area|Number)|ViewNumber)\k<ko>(?>[^>]*)>(?<info>[^<>]+)