GUN regex正则表达式的使用

自己写了个简单的正则替换程序,使用GUN regex库,VC下编译通过

库文件可以去这里下载:http://download.csdn.net/detail/nsdcoder/9573050

互相学习,资源免费


#include <string>
#include "regex.h"
#pragma comment(lib, "regex.lib")


void regtest(std::string regstr, std::string src, std::string newstr);


int main(int argc, char *argv)
{
	std::string reg = "&[^;]\\{2,6\\};";	//&[^;]{2,6}; <[^>]*[p|P]>
	std::string src = "<a class=123>&quot ;</a>&ql;<p>djkslf</p>";
	regtest(reg, src, "---");


	return 0;
}


void regtest(std::string regstr, std::string src, std::string newstr)
{
	regex_t oRegex;
	int nErrCode = 0;
	char szErrMsg[1024];
	size_t unErrMsgLen = 0;


	if((nErrCode = regcomp(&oRegex, regstr.c_str(), 0)) == 0)
	{
		int nmatch = 10;
		regmatch_t what[10];
		while((nErrCode = regexec(&oRegex, src.c_str(), nmatch, what, 0)) == 0)
		{
			printf("Match Result: %s \n", src.substr(what[0].rm_so, what[0].rm_eo-what[0].rm_so).c_str());
			src = src.substr(0, what[0].rm_so) + newstr + src.substr(what[0].rm_eo, src.length()-what[0].rm_eo);
		}
		regfree(&oRegex);
	}
	else
	{
		unErrMsgLen = regerror(nErrCode, &oRegex, szErrMsg, sizeof(szErrMsg));
		unErrMsgLen = unErrMsgLen < sizeof(szErrMsg) ? unErrMsgLen : sizeof(szErrMsg) - 1;
		szErrMsg[unErrMsgLen] = '\0';
		printf("ErrMsg: %s\n", szErrMsg);
		regfree(&oRegex);
	}


	printf("src: %s\n", src.c_str());
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值