注册 登录
编程论坛 C++教室

c++如何提取txt中的特定内容

cykiko 发布于 2012-02-21 16:31, 804 次点击
用爬虫下载下来的txt文档里面包含太多其他东西,我现在想提取<title>   </title>之间的内容并把他们保存在另一个txt文档中,请问该如何解决?说说大体思路,谢谢
5 回复
#2
towhee2012-02-21 17:28
大体思路你不是已经说了嘛,找到这两个标签就成了呗
#3
lz10919149992012-02-21 17:51
试试这个正则表达试:
\<title\>([^<]*)\<\/title\>
第一个组就是要匹配的。

#4
pangding2012-02-21 21:21
这个表达式不行。
比如 <title><b>abc</b></title>这样的文本就不能匹配。
#5
pangding2012-02-21 21:44
以前研究过,这样的文本其实不是太容易匹配。

一般的 * 量词都是贪心的,就是尽量多的匹配东西。如果使用的正是引擎支持憜性匹配量词(比如 perl 中的 *? 或者 vim 中的 \{-}),或者说是尽量少的匹配东西,也许可以考虑用 <tag>.*?<tag> 来匹配。
但是它对下面这类嵌套的文本不太好用:
<tag>abc<tag>def</tag>ghi</tag>
它会匹配红色的部分,但这可能不是我们想要的。

另一种方法得用诸如 perl 中的 (?=...) 或者 (?!...) 这样的表达式(在 vim 中是 \@= 和 \@!,虽然可读性好像差一点。)来匹配。不一定所有的正则引擎都支持这些功能。

不建议楼主用 c++ 做这种小东西。用用其它工具,可能更方便一点。
#6
pangding2012-02-21 21:45
如果楼主的文本里意外的情况不多,3楼的表达式就可以用。
1