zoukankan      html  css  js  c++  java
  • 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版)》

  • 相关阅读:
    紫外传感器波长
    常见设备功耗
    点型感温火灾探测器研发思路
    C#使用Linq to XML进行XPath查询
    题解 最大获利
    题解 走迷宫
    2020-11-16 考试题解
    题解 最小生成树
    题解 「BZOJ4919 Lydsy1706月赛」大根堆
    题解 2020.10.24 考试 T4 模板
  • 原文地址:https://www.cnblogs.com/bugchecker/p/practice_of_GRETA_the_cpp_regular_expression_template_library.html
Copyright © 2011-2022 走看看