求解:boost::regex正则表达式,解析html

别逗我乐 2014-04-07 09:14:26
背景:
本人使用CInternetSession获取网页的html字符串,然后使用CString::Find方法查找,一些标签内容,发现很是麻烦,然后想起来正则表达式,第一次用。。。

网页部分内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="apple-itunes-app" content="app-id=427927518" />
<meta property="qc:admins" content="2012211377645053116375" />
。。。。。省略若干

<td class="td4">47,391,112</td>
</tr>
<tr class="bgcolor2">
<td class="td1">2014-04-05</td>
<td class="td2">
<a href="/lottery/draw/view/52?phase=2014087">2014087</a>
</td>
<td class="td3"><span class="result"> <span class="ball_1">0</span>
<span class="ball_1">3</span>
<span class="ball_1">0</span>
</span></td>

。。。。。省略和上面类似的,若干表格数据

</body>
</html>


现象获取(一系列下方标红的数据):
<td class="td4">47,391,112</td>
</tr>
<tr class="bgcolor2">
<td class="td1">2014-04-05</td>
<td class="td2">
<a href="/lottery/draw/view/52?phase=2014087">2014087</a>
</td>
<td class="td3"><span class="result"> <span class="ball_1">0</span>
<span class="ball_1">3</span>
<span class="ball_1">0</span>
</span></td>

跪求指点:
在线等
...全文
190 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
别逗我乐 2014-04-08
  • 打赏
  • 举报
回复
自己解决了,boost可以解决。本来想无满意结贴的。。。
赵4老师 2014-04-08
  • 打赏
  • 举报
回复
推荐使用regtest软件。 正则测试工具 v1.1.35
别逗我乐 2014-04-08
  • 打赏
  • 举报
回复
自己顶一下。。。 自己顶一下。。。 自己顶一下。。。 难道,只能使用find方法么
AntiMoron 2014-04-08
  • 打赏
  • 举报
回复
同学,你可以这样写
<td class="td1">\d{4,4}-\d{2,2}-\d{2,2}</td>
etc 然而boost库的regex属于NFA。也就是undetermined finite automata. 其效率着实让人着急。 你还是用字符串的方法自己手撸lexme解析吧。
火头军 2014-04-07
  • 打赏
  • 举报
回复
如果真的要解析html ,需要很多正则表达式混用,如果 < 表示标签的开始 css属性怎么解析 什么时候结束,遇到注释怎么办 遇到section 怎么办 等等 可以使用开源的库进行解析

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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