1 / 18
文档名称:

boost库中的正则表达式.doc

格式:doc   大小:390KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

boost库中的正则表达式.doc

上传人:szh187166 2019/7/17 文件大小:390 KB

下载得到文件列表

boost库中的正则表达式.doc

相关文档

文档介绍

文档介绍:正则表达式被封装为一个类型basic_regex的对象。我们将在下一节更深入地讨论正则表达式如何被编译和分析,这里我们首先粗略地看看basic_regex,以及这个库中三个最重要的算法。namespaceboost{template<classcharT,classtraits=regex_traits<charT>>classbasic_regex{public:explicitbasic_regex(constcharT*p,flag_typef=regex_constants::normal);boolempty()const;unsignedmark_count()const;flag_typeflags()const;};typedefbasic_regex<char>regex;typedefbasic_regex<wchar_t>wregex;}成员函数explicitbasic_regex(constcharT*p,flag_typef=regex_constants::normal);这个构造函数接受一个包含正则表达式的字符序列,还有一个参数用于指定使用正则表达式时的选项,例如是否忽略大小写。如果p中的正则表达式无效,则抛出一个bad_expression或regex_error的异常。注意这两个异常其实是同一个东西;在写这本书之时,尚未改变当前使用的名字bad_expression,()const;这个成员函数是一个谓词,当basic_regex实例没有包含一个有效的正则表达式时返回true,即它被赋予一个空的字符序列时。unsignedmark_count()const;mark_count返回regex中带标记子表达式的数量。带标记子表达式是指正则表达式中用圆括号括起来的部分。匹配这个子表达式的文本可以通过调用某个正则表达式算法而获得。flag_typeflags()const;返回一个位掩码,其中包含这个basic_regex所设置的选项标志。例如标志icase,表示正则表达式忽略大小写,标志JavaScript,表示regex使用JavaScript的语法。typedefbasic_regex<char>regex;typedefbasic_regex<wchar_t>wregex;不要使用类型basic_regex来定义变量,你应该使用这两个typedef中的一个。这两个类型,regex和wregex,是两种字符类型的缩写,就如string和wstring是basic_string<char>和basic_string<wchar_t>的缩写一样。这种相似性是不一样的,某种程度上,regex是一个特定类型的字符串的容器。普通函数template<classcharT,classAllocator,classtraits>boolregex_match(constcharT*str,match_results<constcharT*,Allocator>&m,constbasic_regex<charT,traits>&e,match_flag_typeflags=match_default);regex_match判断一个正则表达式(参数e)。注意,这个正则表达式必须匹配被分析串的全部,,<classcharT,classAllocator,classtraits>boolregex_search(constcharT*str,match_results<constcharT*,Allocator>&m,constbasic_regex<charT,traits>&e,match_flag_typeflags=match_default);regex_search类似于regex_match,但它不要求整个字符序列完全匹配。你可以用regex_search来查找输入中的一个子序列,<classtraits,classcharT>basic_string<charT>regex_replace(constbasic_string<charT>&s,constbasic_regex<charT,traits>&e,constbasic_string<charT>&fmt,match_flag_typeflags=match_default);regex_replace在整个字符序列中查找正则表达式e的所有匹配。这个算法每次成功匹配后,