mfc-vc++-如何使用正则过滤函数

这个函数可以正则匹配出一段文本,比如我们获取了一个网站的一个页面的txet文本后,可以利用本函数方便的取出我们想要的目标字段,比如,这个页面的title,keywords,等目标元素。

要使用此函数,需要你的vc工程是vs2010以上版本(从2010版本开始,微软才内置了“regex.h”的),首先包含头文件

#include <regex>


函数开始

// 这是一个匹配strBegin和strEnd之间字符串的函数
//str,指定要查找的字符串
//strBegin,指定开始处的字符串
//strEnd,指定结尾处的字符串
//长度为0,说明没有匹配成功


CString CConfigureDlg::GetMatchCString(CString strSearch, CString strBegin, CString strEnd)
{
CString strReturn;
//CString->string
std::string str(strSearch.GetBuffer());
//正则规则
std::string strbegin,strend,strreg;
strbegin = strBegin.GetBuffer();
strend = strEnd.GetBuffer();
strreg = "(.*?)";
strreg = strbegin + strreg + strend;
std::regex reg(strreg);
//存放匹配出来字符串
std::match_results<std::string::const_iterator> mr;


if (std::regex_search(str,mr,reg))
{
std::string s(mr.str());
//CString strURL;
strReturn = s.c_str();
//去掉前后两个标识符
strReturn.Replace(strBegin,"");
strReturn.Replace(strEnd,"");
}
return strReturn;
return CString();
}

One comment

Leave a Reply