c#中使用正则表达式获取匹配内容

edie2008 2011-03-18 10:14:59
现在我希望提取一个网页中的表格中的特定元素内容,该怎么写这个正则表达式呢?主要是提取姓名、考号、语文那一列的内容,下面的是网页源代码:
<table width="782" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">

<tbody>

<tr>
<td width="91" height="371" valign="top">  </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中学      <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"> </font></td>
<td width="82%" valign="top" class="notice"><font color="#000000"> </font></td>
<td width="0%"> </td>
</tr>

<tr>
<td height="46" class="notice"><font color="#000000"> </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"> </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"> </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>
...全文
531 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-03-18
  • 打赏
  • 举报
回复
不想要姓名的话: (?is)<tr class="nt1">\s*<td height[^>]*>\s*<div[^>]*>([^\s]+)\s*?</div>
-过客- 2011-03-18
  • 打赏
  • 举报
回复
这样?

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";
}
/*-------输出-------
姓名
考号
语文
英语
数学
理科综合
总分
*/
机器人 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxcnn 的回复:]
这样?


C# code
Regex reg = new Regex(@"(?is)<div[^>]*?align=""left""[^>]*>(.*?)</div>");
Regex regTag = new Regex(@"<[^>]*>");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
……
[/Quote]

把过客大大的left改为right就行了。
edie2008 2011-03-18
  • 打赏
  • 举报
回复
大家理解错了(好像是我没说明白,汗)我要的输出是提取那几个汉字
语文
英语
数学
理科综合
机器人 2011-03-18
  • 打赏
  • 举报
回复
(?is)<div[^>]*>(?:姓名|考号|语文).*?<strong>([^\s]*)\s*?</strong>
-过客- 2011-03-18
  • 打赏
  • 举报
回复
这样?

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
*/

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧