现在我希望提取一个网页中的表格中的特定元素内容,该怎么写这个正则表达式呢?主要是提取姓名、考号、语文那一列的内容,下面的是网页源代码:
<table width="782" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"><tbody><tr>
<td width="91" height="371" valign="top">&nbsp;     </td>
<td width="529" valign="top">
<p> </p>
<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr class="nt1">
<td height="35" colspan="3">
<div align="center">
<p><br>                <font size="+2" face="仿宋_GB2312"><strong>成绩查询</strong></font></p>
</div>
<hr noshade="">
<br> </td>
</tr><tr class="nt1">
<td width="38%" height="28">
<div align="right">姓名</div>
</td>
<td width="9%">
<div align="center">--</div>
</td>
<td width="53%">
<div align="left" class="style1"><strong>张三              </strong></div>
</td>
</tr><tr class="nt1">
<td height="29">
<div align="right">考号</div>
</td>
<td>
<div align="center">--</div>
</td>
<td>
<div align="left" class="style1"><strong>000000000000001</strong></div>
</td>
</tr><tr class="nt1">
<td height="29">
<div align="right">语文        </div>
</td>
<td>
<div align="center">--</div>
</td>
<td>
<div align="left" class="style1"><strong>61</strong></div>
</td>
</tr><tr class="nt1">
<td height="32">
<div align="right">英语              </div>
</td>
<td>
<div align="center">--</div>
</td>
<td>
<div align="left" class="style1"><strong>38</strong></div>
</td>
</tr><tr class="nt1">
<td height="33">
<div align="right">数学                        </div>
</td>
<td>
<div align="center">--</div>
</td>
<td>
<div align="left" class="style1"><strong>73</strong></div>
</td>
</tr><tr class="nt1">
<td height="42">
<div align="right">理科综合        </div>
</td>
<td>
<div align="center">--</div>
</td>
<td>
<div align="left" class="style1"><strong>79</strong></div>
</td>
</tr><tr valign="top" class="nt1">
<td height="101">
<div align="right">总分</div>
</td>
<td>
<div align="center">--</div>
</td>
<td>
<div align="left" class="style1"><strong>251</strong></div>
</td>
</tr><tr class="nt1">
<td><span class="style2"></span></td>
<td colspan="2">
<div align="right"><span class="nt1">123中学&nbsp;&nbsp;&nbsp;   <br>              教务处  </span> </div>
</td>
</tr><tr>
<td height="19">       </td>
</tr></tbody></table><table width="100%" border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td height="24">
<div align="center">              
<hr noshade="">
<p> </p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="137"><tbody><tr>
<td width="15%" height="29" class="notice"><font color="#000000">考生注意:</font></td>
<td width="3%" class="notice"><font color="#000000">&nbsp;</font></td>
<td width="82%" valign="top" class="notice"><font color="#000000">&nbsp;</font></td>
<td width="0%"> </td>
</tr><tr>
<td height="46" class="notice"><font color="#000000">&nbsp;</font></td>
<td valign="top" class="notice"><font color="#000000">1、</font></td>
<td valign="top" class="notice"><font color="#000000">注意事项一</font></td>
<td> </td>
</tr><tr>
<td height="31" class="notice"><font color="#000000">&nbsp;</font></td>
<td valign="top" class="notice"><font color="#000000">2、</font></td>
<td valign="top" class="notice"><font color="#000000">注意事项二</font></td>
<td> </td>
</tr><tr>
<td height="31" class="notice"><font color="#000000">&nbsp;</font></td>
<td valign="top" class="notice"><font color="#000000">3、</font></td>
<td valign="top" class="notice"><font color="#000000">注意事项三</font></td>
<td> </td>
</tr></tbody></table>
</div>
</td>
</tr></tbody></table>
</td>
<td width="162" valign="top">
<p> </p>
<p> </p>
<p> </p>
</td>
</tr></tbody></table>

解决方案 »

  1.   

    这样?Regex reg = new Regex(@"(?is)<div[^>]*?align=""left""[^>]*>(.*?)</div>");
    Regex regTag = new Regex(@"<[^>]*>");
    MatchCollection mc = reg.Matches(yourStr);
    foreach (Match m in mc)
    {
        richTextBox2.Text += regTag.Replace(m.Groups[1].Value, "") + "\n";
    }
    /*-------输出-------
    张三              
    000000000000001
    61
    38
    73
    79
    251
    */
      

  2.   

    (?is)<div[^>]*>(?:姓名|考号|语文).*?<strong>([^\s]*)\s*?</strong>
      

  3.   


    把过客大大的left改为right就行了。
      

  4.   

    这样?Regex reg = new Regex(@"(?is)<div[^>]*?align=""right""[^>]*>([^<]*)</div>");            
    MatchCollection mc = reg.Matches(yourStr);
    foreach (Match m in mc)
    {
       richTextBox2.Text += m.Groups[1].Value.Trim() + "\n";
    }
    /*-------输出-------
    姓名
    考号
    语文
    英语
    数学
    理科综合
    总分
    */
      

  5.   

    不想要姓名的话: (?is)<tr class="nt1">\s*<td height[^>]*>\s*<div[^>]*>([^\s]+)\s*?</div>