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使用案例,码迷,mamicode.com

时间: 2024-10-07 05:28:23

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

cocos2dx下C++11正则表达式和android下C语言正则表达式的使用--------案例密码校验

/************************************************************************/ /* 密码校验 */ /* C++11下没有问题,但是C语言是有问题的 */ /* 错误案例:^[[email protected]#$%^&*()_+`\\-={}\\[\\]:\";'<>?,.\\/]{6,20}$ 正确案例:^[][email protected]#$%^&*()_+`={}:;'<>

微软小娜app案例分析

个人博客作业三:微软小娜APP的案例分析 我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,买火车票的网站,互相联系用的微信.QQ,等等都是软件,都很值得分析.你为何成为它们的用户?它们的团队做对了什么,做错了什么?如果你来做,会做得更好么? 通过各种案例分析,评测,辩论,总结,我们就能看到软件工程的原则在实践中的种种体现,学好软件工程,帮助我们在实践中做得更好. 产品 请下载 微软小娜-智能助手,win10,iOS或Android客户端都有! 第一部分 调研, 评测 (软件的b

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

案例一. 如 "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb" . 案例二. /// <summary> /// 去掉<script>标签 /// </summary> static void Test2() { //要匹配的字符串 string

正则表达式--js使用案例

前言:在前端页面使用中,遇到日期格式的验证,开始使用了一款表单控件验证,但是不兼容!!而且使用起来还受到很大约束,所以就决定自己写原生js.为了完成日期格式的验证,第一步,当然是学会使用正则表达式.以前都是直接复制使用,这次理解原理,自己原生写. 接前两篇:js使用案例. //检测控件内容内容格式--控制为"2014-07-21". functioncheckDate(formContorId,message){ // 获取控件对象. var temp = document.getEl

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

第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其他的词典应用,这个软件的bug实在是是是太多了.(甚至怀疑这个软件不更新是专门作为软工作业的...) 下面就一一列举: 拍照取词功能.这个功能我试过扫描电子图片上很大的英文单词和纸质试卷上的单词,都无法使用.前者是提示翻译错误(有一次报了java的错误),后者的结果是“没有识别到文字”.我也试了有道

个人博客作业三:微软小娜app案例分析

Win10语音助理工具Cortana(小娜)给很多人的印象就是一款耍贫嘴软件,没事时拿来耍几下嘴皮子,打发打发无聊心情.其实Win10小娜里还有一项重要的创新功能,小娜绝没有你想像中那样简单. 1. 语音提醒 Cortana设立语音提醒是个不错的主意.你可以对着它说"提醒我明天上午和刘总会面"或者"记着下午把资料还给老张",Cortana将自动把相关内容设为提醒.如果你手头还有其他Win10设备,还能享受到多终端提醒带来的方便. 此外你也可以通过"增加日历

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

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #1e9421 } span.s1 { } span.s2 { font: 18.0px Menlo } 富文本(正则表达式) 一.新建工程导入图片 二 实现方式一(缺点是只能解决一个图片的替换) p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3e1

Excel-VBA正则表达式提取文本案例

背景是这样的,我手上有一份统计表,需要将IP地址里的省市提取出来,以便于处理.因此我首先想到了Python里的正则表达式,打算写一个自定义函数去批量提取.然而之前没学VBA里的正则表达式语法,因此就去网上搜了一下,结果发现根本不能运行.几经辗转,总算搞定,因此总结一下,供后来者参考. 编程目的:实现IP地址中省市信息的提取.    主要涉及的知识点:VBA函数.正则表达式 代码如下: Function 提取省市(rng As Range, name) Application.Volatile S

ATL正则表达式库与CAtlRegExp的使用

正则表达式是最强大的文本解析工具之一, 在ATL中也提供了一些用于正则表达式的类库(CATLRegExp等),本文将简要说明这些类库的使用方法. 1.CATLRegExp类 声明: template <class CharTraits=CAtlRECharTraits> class CAtlRegExp; 初始化: 与微软的GRETA类库(微软研究院推出的另一个正则表达式类库)不同,CATLRegExp并没有在构造函数中提供初始化匹配字符串的方法,而是让使用者通过调用它的Parse()方法,使