用正则表达式取表数据

alvin_baby 2010-04-08 03:43:19
刚刚发帖了,没有满意答复,重新发一下。
简单介绍一下先,我从一个网页读了一个html 字符串下来,然后我想截取这个页面的某一部分。
我要截取的这个是一个表,表内两行,两行里面分别又放了四个表,结构如下:
<table width="100%" border="0" cellpadding="0" cellspacing="3" bgcolor="#4A9EE0">
<tr>
<td width="25%">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>1</td></tr><tr><td>1</td></tr><!-- 可能有多个tr-->
</table>
</td>
<td width="25%">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>2</td></tr><tr><td>2</td></tr><!-- 可能有多个tr-->
</table>
</td>
<td width="25%">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>3</td></tr><tr><td>3</td></tr><!-- 可能有多个tr-->
</table>
</td>
<td width="25%">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>4</td></tr><tr><td>4</td></tr><!-- 可能有多个tr-->
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>5</td></tr><tr><td>5</td></tr><!-- 可能有多个tr-->
</table>
</td>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>6</td></tr><tr><td>6</td></tr><!-- 可能有多个tr-->
</table>
</td>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>7</td></tr><tr><td>7</td></tr><!-- 可能有多个tr-->
</table>
</td>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr><td>8</td></tr><tr><td>8</td></tr><!-- 可能有多个tr-->
</table>
</td>
</tr>
</table>

希望哪个大哥能把这个截取的正则表达式写出来,谢谢!!
最好能详细一点,下面是我把网页截取下来的代码,给兄弟们做参考。如果错了指正一下,谢谢!!
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2010-04-08
  • 打赏
  • 举报
回复
白天在公司上了不楼主所给的那个网站,没办法分析究竟哪里出了问题

刚刚到楼主所要分析的那个网站去看了下,楼主顶楼所给的楼据源与网页源文件不一致,所以取不到

做了下修改,把正则替换为下面的就可以了
Regex reg = new Regex(@"(?is)<table\s+width=""100%""\s+border=""0""\s+cellpadding=""0""\s+cellspacing=""3""\s+bgcolor=""#4A9EE0""\s*>(?><table[^>]*>(?<o>)|</table>(?<-o>)|(?:(?!</?table\b).)*)*(?(o)(?!))</table>");


qlzf11140820 2010-04-08
  • 打赏
  • 举报
回复
content=System.Text.RegularExpressions.Regex.Replace(content , "<[^>]+>", "");
alvin_baby 2010-04-08
  • 打赏
  • 举报
回复
public string GetPageTable()
{
string content = "";
string pageUrl = "";
byte[] pageData = null;
pageUrl = string.Format("http://bjfdc.bjjs.gov.cn/public/Index.asp");

try
{
using (WebClient wc = new WebClient())
{
pageData = wc.DownloadData(pageUrl);
content = Encoding.GetEncoding("GB2312").GetString(pageData);
}
}
catch (Exception ex)
{
//throw ex;
return content;
}

//取表格规格为的数据
Regex reg = new Regex(@"(?is)<table width=""100%"" border=""0"" cellpadding=""0"" cellspacing=""3"" bgcolor=""#4A9EE0""></table>");
Match m = reg.Match(content);
if (m.Success)
{
content = m.Value;
}
return content;
}

110,530

社区成员

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

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

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