c++正则表达式模板库GRETA的使用

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 > 0) {
        // success
        std::wstring info = (sp_res.strings())[0];
    }

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

参考资料:

1.greta-2.6.4greta2.html

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

原文地址:https://www.cnblogs.com/bugchecker/p/practice_of_GRETA_the_cpp_regular_expression_template_library.html