- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《boost深入剖析之使用技巧》 第五讲:boost 正则表达式库 主讲人:步磊峰 UIPower 3D界面引擎负责人 第一节: 什么是xpressive库 * 1、是一个正则表达式模板库 2、可以以字符串方式编写并在运行期进行动态的分析(动态regexes) 3、或者作为表达式模板方式编写并在编译期进行分析(静态regexes) 4、动态regexes的优点在于,它们可以在运行期从用户的输入中获得,或者是从一个初始化文件中读取 5、静态regexes的优点在于以C++表达式而不是字符串进行表示,因此在编译期进行语法检查,可以在正则表达 式匹配时回调。由于是静态绑定,运行效率更高 6、本教程仅关注xpressive动态标示 第二节: xpressive头文件 * xpressive提供动态和静态两种使用方式 如果想混用两种方式或不关心这两种方式 则 #include boost/xpressive/xpressive.hpp 如果仅想使用静态方式 则 #include boost/xpressive/xpressive_static.hpp 如果仅想使用动态方式 则 #include boost/xpressive/xpressive_dynamic.hpp 引入名字空间 using namespace boost::xpressive; 第三节: xpressive工具箱 * 第四节: typedef与iterator类型 * 第五节: basic_regex类概要 * templatetypename BidiIter class basic_regex { regex_id_type regex_id() const; //用于判断是否已经编译,使用flyweight设计模式 std::size_t mark_count() const; //子表达式的个数 static basic_regex compile(InputRange const pat) //静态工厂函数 } ; 第六节: 匹配和查找全局函数 * 1、 匹配全局函数 bool regex_match(String str, basic_regex const re); bool regex_match(String str, match_results what, basic_regex const re); 2、 查找全局函数 bool regex_search(String str, basic_regex const re); bool regex_search(String str, match_results what, basic_regex const re); 第七节:match_results 和 sub_match * 第八节: 正则表达式规则 * 常用的元字符、 表一 第八节: 正则表达式规则 * 常用的元字符、 表二
文档评论(0)