VC6微软正则表达式greta使用案例
#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使用案例的更多相关文章
- C# 正则表达式贪婪模式案例
案例一. 如 "acbacb" 正则 "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ...
- 个人作业-week2:关于微软必应词典的案例分析
第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其 ...
- Java基础知识强化70:正则表达式之引入案例(QQ号码校验)
1. 校验QQ号码的案例,如下: package cn.itcast_01; import java.util.Scanner; /* * 校验qq号码. * 1:要求必须是5-15位数字 * 2:0 ...
- iOS正则表达式的使用案例-富文本
富文本(正则表达式) 一.新建工程导入图片 二 实现方式一(缺点是只能解决一个图片的替换) _myLabel.font = [UIFont systemFontOfSize:15]; //@" ...
- 正则表达式&自定义异常 典型案例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static vo ...
- 【公开课】《奥威Power-BI基于微软示例库(MSSQL)快速制作管理驾驶舱》文字记录与反馈
本期分享的内容: <奥威Power-BI基于微软示例库(MSSQL)快速制作管理驾驶舱> 时间:2016年11月02日 课程主讲人:叶锡文 从事商业智能行业,有丰富的实施经验,擅长 ...
- 浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
作者 王枫发布于2014年2月19日 综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个 ...
- 转:浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个时代决胜未来的关键因素,而基于大数据的 ...
- 【1】python-正则表达式语法规范与案例
正则表达式的用法与案例分析 2018-08-24 21:26:14 [说明]:该文主要为了随后复习和使用备查,由于做了word文档笔记,所以此处博文没有怎么排版,没放代码,以插入图片为主, 一.正则表 ...
随机推荐
- A*算法–A* algorithm tutorial
Author:Justin Heyes-Jones From: http://heyes-jones.com/astar.php Date:2014.8.16 本文地址:http://www.cnbl ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第一部分(Page 6)
编写你的第一个 Django app,第一部分(Page 6)转载请注明链接地址 Django 2.0.1 官方文档翻译: Django 2.0.1.dev20171223092829 documen ...
- JavaScript绝句的小研究
前几日在网上看到一篇文章:JavaScript绝句,看了以后觉得里面的代码颇为有趣,不过文章里面只是简单的说了这样写的目的和结果,却没有令读者起到既知其然,又知其所以然的效果.这里简单写一篇小文章剖析 ...
- iOS-Socket编程体验
CHENYILONG Blog Socket编程体验 Socket编程体验 技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/lu ...
- 第7月第17天 rxswift swift3.0
1.rxswift just(...) .subscribe(onNext: { }) https://realm.io/cn/news/slug-max-alexander-functional-r ...
- python垃圾回收二
由于循环引用的存在,我们在删除了a跟b之后,引用计数是1,这样,现有的垃圾回收机制是永远不可能把她们删除了.他们将永远存在于内存中. 我们当然不能对这种情况置之不理,于是,我们又添加了两种新的回收机制 ...
- B - C Looooops POJ - 2115 (扩展欧几里得)
题目链接:https://cn.vjudge.net/contest/276376#problem/B 题目大意:for( int i= A ; i != B; i+ = c ),然后给你A,B,C ...
- ocky勒索软件恶意样本分析2
locky勒索软件恶意样本分析2 阿尔法实验室陈峰峰.胡进 前言 随着安全知识的普及,公民安全意识普遍提高了,恶意代码传播已经不局限于exe程序了,Locky敲诈者病毒就是其中之一,Locky敲诈者使 ...
- nested exception is com.svorx.core.dao.PersistenceException
在quartz定时执行任务的时候,hibernate报错,在只读事务中进行了update语句: [ERROR] 2018/08/03 10:35:00,827 org.quartz.core.JobR ...
- Linux系统的快速启动机制(内核切换) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4187846 原文地址:Linux系统的 ...