正则表达式问题

tangxufeng 2012-03-20 03:58:33
P/E(x)</font></p>
</td>
</tr>

<tr>

<td bgcolor="#CCCCCC" align="center" width="53"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">13.94</font></td>

<td bgcolor="#CCCCCC" align="center" width="77"><img src="../images/down.gif"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">0.06</font></td>

</tr>

我想取上面第二个<tr>和</tr>之间的值,<tr>前面的内容是
P/E(x)</font></p>
</td>
</tr>
怎么取
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
porschev 2012-03-20
  • 打赏
  • 举报
回复

你该帖出你全页的HTML,那可能写出来还会简单很多



static void Main(string[] args)
{

string str = @"P/E(x)</font></p>
</td>
</tr>

<tr>

<td bgcolor=""#CCCCCC"" align=""center"" width=""53""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""2"">13.94</font></td>

<td bgcolor=""#CCCCCC"" align=""center"" width=""77""><img src=""../images/down.gif""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""2"">0.06</font></td>

</tr>
";

Regex re = new Regex(@"(?is)P/E\(x\)\</font\>\</p\>\s*\</td\>\s*\</tr\>\s*<tr>\s*\<td[^>]+\>\<font[^?]+\>(.*?)\</font\>\</td\>\s*\<td[^>]+\><img[^>]+>\<font[^?]+\>(.*?)\</font\>\</td\>\s*\</tr\>", RegexOptions.None);
MatchCollection mc = re.Matches(str);
foreach (Match ma in mc)
{
Console.WriteLine(ma.Groups[1].Value); //13.94
Console.WriteLine(ma.Groups[2].Value); //0.06
}
Console.ReadLine();
}

porschev 2012-03-20
  • 打赏
  • 举报
回复


static void Main(string[] args)
{

string str = @"P/E(x)</font></p>
</td>
</tr>

<tr>

<td bgcolor=""#CCCCCC"" align=""center"" width=""53""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""2"">13.94</font></td>

<td bgcolor=""#CCCCCC"" align=""center"" width=""77""><img src=""../images/down.gif""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""2"">0.06</font></td>

</tr>
";

Regex re = new Regex(@"(?is)P/E\(x\)\</font\>\</p\>\s*\</td\>\s*\</tr\>\s*<tr>\s*\<td[^>]+\>\<font[^?]+\>(.*?)\</font\>\</td\>\s*\<td[^>]+\><img[^>]+>\<font[^?]+\>(.*?)\</font\>\</td\>\s*\</tr\>", RegexOptions.None);
MatchCollection mc = re.Matches(str);
foreach (Match ma in mc)
{
Console.WriteLine(ma.Groups[1].Value); //13.94
Console.WriteLine(ma.Groups[2].Value); //0.06
}
Console.ReadLine();
}

q107770540 2012-03-20
  • 打赏
  • 举报
回复
(?<=>)\d+(\.\d+)?(?=<)
q107770540 2012-03-20
  • 打赏
  • 举报
回复
(?<=>).*?(?=<)
tangxufeng 2012-03-20
  • 打赏
  • 举报
回复
或者具体的说,我想取13.940.06
有没有更好的办法
tangxufeng 2012-03-20
  • 打赏
  • 举报
回复
想取这段
<td bgcolor="#CCCCCC" align="center" width="53"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">13.94</font></td>

<td bgcolor="#CCCCCC" align="center" width="77"><img src="../images/down.gif"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">0.06</font></td>
porschev 2012-03-20
  • 打赏
  • 举报
回复


static void Main(string[] args)
{

string str = @"P/E(x)</font></p>
</td>
</tr>

<tr>

<td bgcolor=""#CCCCCC"" align=""center"" width=""53""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""2"">13.94</font></td>

<td bgcolor=""#CCCCCC"" align=""center"" width=""77""><img src=""../images/down.gif""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""2"">0.06</font></td>

</tr>
";

Regex re = new Regex(@"(?is)(?<=P/E\(x\)\</font\>\</p\>\s*\</td\>\s*\</tr\>\s*<tr>).*?(?=\</tr\>)", RegexOptions.None);

str = re.Match(str).Value;


Console.WriteLine(str);
Console.ReadLine();
}


//取出来的结果是这一段:
//<td bgcolor="#CCCCCC" align="center" width="53"><font face="Verdana, Arial, //Helvetica, sans-serif" size="2">13.94</font></td>
//<td bgcolor="#CCCCCC" align="center" width="77"><img src="../images/down.gif"><font //face="Verdana, Arial, Helvetica, sans-serif" size="2">0.06</font></td>

porschev 2012-03-20
  • 打赏
  • 举报
回复

你把你要取的那一段标红一下看看,

不知道你要取哪一段
q107770540 2012-03-20
  • 打赏
  • 举报
回复
你要的结果是这个?

<td bgcolor="#CCCCCC" align="center" width="53"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">13.94</font></td>

<td bgcolor="#CCCCCC" align="center" width="77"><img src="../images/down.gif"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">0.06</font></td>
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复
不是只有一对<tr></tr>,不配对啊,

111,126

社区成员

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

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

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