C++爬虫原理(八):正则知识和Boost在VS中的应用

C++爬虫原理(八):正则知识和Boost在VS中的应用

一、正则的知识?什么是正则?正则是干什么用的?正则的应用?

请参考以下教程:正则表达式30分钟入门教程

二、正则表达式中一些常见的元字符

正则表达式 (总结 by: cplusplus.me )

  • ^ : 表示 行的开始,^放在[]中表示排除的意思
  • $ : 表示 行的结束
  • \b : 表示 单词定界符
  • \B : 表示 不能是一个完整的单词
  • [] : 表示 方括号内只能匹配一个字符。eg: [Tt]忽略大小写
  • | : 表示 或。eg: T|t忽略大小写。 注: []与|的区别为,[]只能为单个字符,|可以为任意长度
  • – : 表示 连字符,字符的范围。eg: [a-zA-Z]
  • ? : 表示 匹配前面的字符零次或一次
  • + : 表示 匹配前面的字符一次或多次
  • * : 表示 匹配前面的字符零次或多次
  • {n} : 表示 匹配前面的字符n次
  • {n,}: 表示 匹配前面的字符最少n次
  • {n,m}: 表示 匹配前面的字符最少n次,最多m次
  • . : 表示 匹配除换行符外的任意一个字符
  • \ : 表示 转移字符 或 反斜杠
  • () : 表示 改变限定符的作用范围 或 分组。eg: (thir|four)th , ([0-9]{1,3}){3}

三、关于C++编程中的正则

常用正则有Boost regex,C regex,C++ regex(C++11,VS2010+均支持),这里有关于正则速度的比较,请查看文章:《C++中三种正则表达式比较(C regex,C ++regex,boost regex)》《#墙裂推荐Boost regex# C,C++11,Boost三种regex库性能比较》。但是以上文章仅供参考,我这里在真实环境测试的过程中,成熟的Boost regex效率远远大于C++11 regx 。对于正则,还是看真实环境,测试后取用把。仁者见仁智者见智~

四、Boost正则在VS中的应用

现在在VS中使用Boost非常的方便了,步骤如下:

  1. 下载Boost库:http://www.boost.org/
  2. 解压Boost压缩文件,管理员运行CMD,然后CD到解压目录
  3. 运行bootstrap.bat, 然后等待完成
  4. 上一部执行完成会生成一个bjam.exe程序,运行bjam.exe。
  5. 等待完成就OK了
  6. 最后把VS工程包含Boost目录即可,操作如下:包含目录添加  G:\boost_1_55_0 ;库目录添加    G:\boost_1_55_0\stage\lib,示例图片(来源:百度)如下:boost1

boost2

创作、整理、搬运:cpp.cloudcpp.com Share、Open- C/C++程序员之家