GRETA是微软研究院的一位前员工开发并开源的一个C++正则表达式库,兼容perl正则语法

官方介绍:“A fast, flexible, perl-compliant regular expression template library for C++.”

获取地址:http://research.microsoft.com/en-us/downloads/bd99f343-4ff4-4041-8293-34c054efe749/default.aspx

c++的正则库,有一个历史悠久的pcre库(还有一个对应的c++封装:pcre++), 另外boost也提供了正则库

我的需求比较简单,所以不愿意用复杂的东西,就试试这个库吧

当前最新版本是2.6.4,下载greta-2.6.4.zip解压后,包含以下文件:

其中great2.htm是说明文档,里面包含了一些例子

要使用这个库,只需要在你的.cpp里包含regexpr2.h这个头文件即可

简单用法(包含match和split):

1. match:匹配是否存在以"No matching devices found"开头的行

    TCHAR str[] = _T("No matching devices found");
match_results results;
rpattern pat(_T("^No\\smatching\\sdevices\\sfound"));
match_results::backref_type br = pat.match( str, results);
if (!br.matched) {
// Not matched
} // Matched

2.split:切分某行并获得其中一个字段

    TCHAR str[] = _T("ROOT\\MEDIA\\0001                                             : XXX Virtual Audio Driver");
rpattern pat(_T("\\s+"));
split_results sp_res;
size_t num = pat.split(str, sp_res);
if (num > ) {
// success
std::wstring info = (sp_res.strings())[];
}

以空格作为分隔符,将str切分为多个段,取得第一个段的值 info中的值为"ROOT\\MEDIA\\0001"

参考资料:

1.greta-2.6.4\greta2.html

2.小骆驼书 《perl语言入门(第4版)》

c++正则表达式模板库GRETA的使用的更多相关文章

  1. 【超精简JS模版库/前端模板库】原理简析 和 XSS防范

    使用jsp.php.asp或者后来的struts等等的朋友,不一定知道什么是模版,但一定很清楚这样的开发方式: <div class="m-carousel"> < ...

  2. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  3. c++转载系列 std::vector模板库用法介绍

    来源:http://blog.csdn.net/phoebin/article/details/3864590 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作 ...

  4. Handlebars模板库浅析

    Handlebars模板库简单介绍 Handlebars是JavaScript一个语义模板库,通过对view(模板)和data(ajax请求的数据,一般是json)的分离来快速构建Web模板.它采用& ...

  5. 【转】C++标准库和标准模板库

    C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费 ...

  6. STL标准模板库介绍

    1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...

  7. c++模板库(简介)

    目 录 STL 简介 ......................................................................................... ...

  8. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  9. C++——string类和标准模板库

    一.string类 1.构造函数 string实际上是basic_string<char>的一个typedef,同时省略了与内存管理相关的参数.size_type是一个依赖于实现的整型,是 ...

随机推荐

  1. Ubuntu bitnami gitlab 安装

    /************************************************************************************** * Ubuntu bit ...

  2. CodeForces19D:Points(线段树+set(动态查找每个点右上方的点))

    Pete and Bob invented a new interesting game. Bob takes a sheet of paper and locates a Cartesian coo ...

  3. 非旋treap (BZOJ1895)

    记个板子,还是挺好用的. #include <bits/stdc++.h> using namespace std; ]; int rt,n,m,l,r,x,A,B,C,t; struct ...

  4. Bootstrap-CSS:按钮

    ylbtech-Bootstrap-CSS:按钮 1.返回顶部 1. Bootstrap 按钮 本章将通过实例讲解如何使用 Bootstrap 按钮.任何带有 class .btn 的元素都会继承圆角 ...

  5. bzoj1925

    dp 搬题解~~:http://blog.csdn.net/aarongzk/article/details/44871391 #include<cstdio> using namespa ...

  6. 固定dll的加载基址的方法

    调试dll的时候会有一件事情比较烦人,就是dll加载的地址不会很固定(默认设置下编译的dll基址总是0x10000000,多个同基址的dll加载时,后面的肯定会被重定位),这给前后多次调试时对比分析结 ...

  7. (二十四)权限控制(粗粒度)-通过filter

    扩展:权限控制(粗粒度)-通过filter 过滤器编写步骤: 1.编写一个类 实现filter接口 重写方法 2.编写配置文件 <filter> <filter-mapping> ...

  8. rbenv更新ruby后rails命令无效的解决方案

    创建: 2017/11/02 更新: 2018/02/02 增加rbenv使用方法的链接     rbenv的使用: http://www.cnblogs.com/lancgg/p/8281739.h ...

  9. Codeforces - 1117E - Crisp String - 进制 - 交互

    https://codeforces.com/problemset/problem/1117/E 就用abc表示数字来给每个数编码,编完直接问出移动的结果,反构造就行了,比C和D还简单. #inclu ...

  10. BestCoder Round #73 (div.2)1002/hdoj5631

    题意: 给出一张 nnn 个点 n+1n+1n+1 条边的无向图,你可以选择一些边(至少一条)删除. 分析: 一张n个点图,至少n-1条边才能保证联通 所以可以知道每次可以删去1条边或者两条边 一开始 ...