设为首页 加入收藏

TOP

GRETA正则表达式模板类库
2014-11-23 20:06:49 】 浏览:312
Tags:GRETA 正则 表达式 模板

  本文摘要翻译了几篇文章的内容,简单介绍 ATL CAtlRegExp,GRETA,Boost::regex 等正则表达式库,这些表达式库使我们可以方便地利用正则库的巨大威力,给我们的工作提供了便利。


  正则表达式语法 字符元意义.匹配单个字符[ ]指定一个字符类,匹配方括号内的任意字符。例:[abc] 匹配 "a", "b"或 "c"。^如果^出现在字符类的开始处,它否定了字符类,这个被否定的字符类匹配除却方括号内的字符的字符。如:[^abc]匹配除了"a", "b"和"c"之外的字符。如果^出现在正则表达式前边,它匹配输入的开头,例:^[abc]匹配以"a", "b"或"c"开头的输入。-在字符类中,指定一个字符的范围。例如:[0-9]匹配"0"到"9"的数字。 指明 前的表达式是可选的,它可以匹配一次或不进行匹配。例如: [0-9][0-9] 匹配"2"或"12"。+指明 前的表达式匹配一次或多次。例如:[0-9]+匹配"1", "13", "666"等。


  指明*前的表达式匹配零次或多次。 , + , * , +和*的非贪婪匹配版本,它们尽可能匹配较少的字符;而 , +和*则是贪婪版本,尽可能匹配较多的字符。例如:输入" ", 则<.* > 匹配" ",而<.*>匹配" "。( )分组操作符。例如:(d+,)*d+匹配一串由逗号分开的数字,例如: "1"或"1,23,456"。转义字符,转义紧跟的字符。例如,[0-9]+ 匹配一个或多个数字,而 [0-9]+ 匹配一个数字后跟随一个加号的情况。反斜杠也用于表示缩写,a 就表示任何数字、字母。如果后紧跟一个数字n,则它匹配第n个匹配群组(从0开始),例如,<{.* }>.* 匹配"Contents"。注意,在C++字符串中,反斜杠需要用双反斜杠\来表示: "\+", "\a", "<{.* }>.* "。$放在正则表达式的最后,它匹配输入的末端。例如:[0-9]$匹配输入的最后一个数字。|间隔符,分隔两个表达式,以正确匹配其中一个,例如:T|the匹配"The" 或"the"。



  缩写匹配


  ATL CATLRegExp


  ATL Server常常需要对地址、命令等复杂文字字段信息解码,而正则表达式是强大的文字解析工具,所以,ATL提供了正则表达式解释工具。


  示例:


  Match的结果通过第二个参数pContext所指向的CAtlREMatchContext类来返回,Match的结果及其相关信息都被存放在CAtlREMatchContext类中,只要访问CAtlREMatchContext的方法和成员就可以得到匹配的结果。CAtlREMatchContext通过m_uNumGroups成员以及GetMatch()方法向调用者提供匹配的结果信息。m_uNumGroups代表匹配上的Group有多少组,GetMatch()则根据传递给它的Group的Index值,返回匹配上的字符串的pStart和pEnd指针,调用者有了这两个指针,自然可以很方便的得到匹配结果。


  更多内容请参阅: CAtlRegExp Class


  GRETA


  GRETA是微软研究院推出的一个正则表达式模板类库,GRETA 包含的 C++ 对象和函数,使字符串的模式匹配和替换变得很容易,它们是:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一个C++日期类(第一部分) 下一篇计算机二级c++int转换成string类..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目