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非常的方便了,步骤如下:
- 下载Boost库:http://www.boost.org/
- 解压Boost压缩文件,管理员运行CMD,然后CD到解压目录
- 运行bootstrap.bat, 然后等待完成
- 上一部执行完成会生成一个bjam.exe程序,运行bjam.exe。
- 等待完成就OK了
- 最后把VS工程包含Boost目录即可,操作如下:包含目录添加 G:\boost_1_55_0 ;库目录添加 G:\boost_1_55_0\stage\lib,示例图片(来源:百度)如下:
创作、整理、搬运:cpp.cloudcpp.com Share、Open- C/C++程序员之家