#include <string>

#include "regexpr2.h"

using namespace std;

using namespace regex;//greta库的命名空间

//若链接出错,设置MFC静态链接

//查找匹配串

//返回结果匹配串(CStringArray数组指针类型)

CStringArray* Find(LPCTSTR m_reg,LPCTSTR m_source,REGEX_FLAGS dwStyle = NOCASE | MULTILINE)

{

CStringArray* strArray = new CStringArray();

REGEX_FLAGS dw = GLOBAL | ALLBACKREFS | dwStyle;

rpattern reg(m_reg, dw);

match_results results;

match_results::backref_type bt = reg.match(m_source, results);

int iGroups = reg.cgroups();

int nCount = 0;

if(bt.matched)

{

for(int i=0; i<results.cbackrefs(); i++)

{

if(i%iGroups == 0)

{

nCount++;

strArray->Add(results.backref(i).str().c_str());

}

}

}

return strArray;

}

//查找匹配串

//返回结果匹配串(CStringArray数组指针类型)

CStringArray* Find2(LPCTSTR m_reg,LPCTSTR m_source,REGEX_FLAGS dwStyle = NOCASE | MULTILINE)

{

CStringArray* strArray = new CStringArray();

REGEX_FLAGS dw = GLOBAL | ALLBACKREFS | dwStyle;

rpattern reg(m_reg, dw);

match_results results;

match_results::backref_type bt = reg.match(m_source, results);

if(bt.matched)

{

match_results::backref_vector vec = results.all_backrefs();

match_results::backref_vector::iterator iter;

for(iter = vec.begin(); iter != vec.end(); iter++)

{

string str = (*iter).str();

strArray->Add(str.c_str());

}

}

return strArray;

}

//使用实例

CStringArray* str = Find(m_reg, m_source);

for(int i=0; i< str->GetSize(); i++)

{

AfxMessageBox((*str)[i]);

}

//替换匹配串

//返回结果替换后字符串(CString类型)

CString Sub(LPCTSTR m_reg,LPCTSTR m_sub, LPCTSTR m_source,REGEX_FLAGS dwStyle = NOCASE | MULTILINE)

{

CString lpSub;

REGEX_FLAGS dw = GLOBAL | ALLBACKREFS | dwStyle;

rpattern reg(m_reg, m_sub, dw);

subst_results results;

string str(m_source);

int nCount = reg.substitute(str, results);

lpSub = str.c_str();

return lpSub;

}

//使用实例

CString str = Sub(m_reg, m_sub, m_source);

AfxMessageBox(str);

//分割串

//返回结果分割后子串(CStringArray数组类型)

CStringArray* Split(LPCTSTR m_reg, LPCTSTR m_source,REGEX_FLAGS dwStyle = NOCASE | MULTILINE)

{

CStringArray* strArray = new CStringArray();

REGEX_FLAGS dw = GLOBAL | ALLBACKREFS | dwStyle;

rpattern reg(m_reg, dw);

split_results results;

string str(m_source);

int nCount = reg.split(str, results);

for(int i=0; i<nCount; i++)

{

string split = results[i];

strArray->Add(split.c_str());

}

return strArray;

}

//使用实例

CStringArray* str = Split(m_reg, m_source);

for(int i=0; i<str->GetSize(); i++)

{

AfxMessageBox((*str)[i]);

}

VC6微软正则表达式greta使用案例的更多相关文章

  1. C# 正则表达式贪婪模式案例

    案例一. 如 "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ...

  2. 个人作业-week2:关于微软必应词典的案例分析

    第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其 ...

  3. Java基础知识强化70:正则表达式之引入案例(QQ号码校验)

    1. 校验QQ号码的案例,如下: package cn.itcast_01; import java.util.Scanner; /* * 校验qq号码. * 1:要求必须是5-15位数字 * 2:0 ...

  4. iOS正则表达式的使用案例-富文本

    富文本(正则表达式) 一.新建工程导入图片 二 实现方式一(缺点是只能解决一个图片的替换) _myLabel.font = [UIFont systemFontOfSize:15]; //@" ...

  5. 正则表达式&自定义异常 典型案例

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static vo ...

  6. 【公开课】《奥威Power-BI基于微软示例库(MSSQL)快速制作管理驾驶舱》文字记录与反馈

        本期分享的内容: <奥威Power-BI基于微软示例库(MSSQL)快速制作管理驾驶舱> 时间:2016年11月02日 课程主讲人:叶锡文 从事商业智能行业,有丰富的实施经验,擅长 ...

  7. 浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案

    作者 王枫发布于2014年2月19日 综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个 ...

  8. 转:浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案

    综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个时代决胜未来的关键因素,而基于大数据的 ...

  9. 【1】python-正则表达式语法规范与案例

    正则表达式的用法与案例分析 2018-08-24 21:26:14 [说明]:该文主要为了随后复习和使用备查,由于做了word文档笔记,所以此处博文没有怎么排版,没放代码,以插入图片为主, 一.正则表 ...

随机推荐

  1. windows10 升级1803后,远程错误提示“出现身份验证错误,要求的函数不受支持 CredSSP 加密 Oracle修正”的解决办法

    远程出现错误提示:出现身份验证错误,要求的函数不受支持 CredSSP 加密 Oracle修正 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配> ...

  2. Codeforces Round #540 Tanya and Candies 预处理

    http://codeforces.com/contest/1118/problem/B 题目大意,给你一个序列,删去一个数值之后,要求剩下序列奇数和偶数的和相同,问有多少种删法. 思路:预处理奇数和 ...

  3. vb 中recordset提示对象关闭时不允许操作

    vb中执行查询后,一般要判断是否为空,只要执行的查询执行了select,都可以用rs.eof 或者 rs.recordcount来判断, 但是,如果执行的sql中加了逻辑判断,导致没有执行任何sele ...

  4. java交互方式中的同步与异步

    JAVA中交互方式分为同步和异步两种: 1.同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程; 2.异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即 ...

  5. CSS3设置内容超过一定长度后自动折行

    在用编辑器保存的数据到数据库的时候经常是在我们的内容前后加一个P标签,但是出来之后是一行,有时候会超过边框的宽度,所以研究了如何折行,如下代码: <!DOCTYPE html> <h ...

  6. mybatis介绍——(一)

    官方API:http://www.mybatis.org/mybatis-3/index.html 中文: http://www.mybatis.org/mybatis-3/zh/index.html ...

  7. 为什么要使用断路器Hystrix?

    为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC).为了保证其高可用,单个服务又必须集群部署.由于网络原因或者自身的原因,服务并不能保证服 ...

  8. Docker手动搭建sentry错误日志系统

    Sentry介绍 在开发过程中,我们通过debug来排查bug,并且使用logging来记录系统的错误.但是logging有很多不足: 必须登陆到服务器查看日志文件 需要主动去查询 输出日志方式无法把 ...

  9. centos7.2环境yum方式快速搭建lnmp环境nginx+mariadb+php-fpm

    centos7.2环境yum方式安装nginx+mariadb+php-fpm 1.安装lnmp环境 安装epel源 yum install -y epel-release 安装 MySQL + PH ...

  10. Java 基本语法---Java数组

    Java 基本语法---Java数组 0. 概述 数组:相同类型的数据 按照顺序 组成的一种 引用数据类型 . 数据类型:基本数据类型 + 引用数据类型: 引用数据类型:类 + 接口 + 数组 : 一 ...