使用ATL中的正则表达式总是会多多少少的出问题,比如$不能识别,一些其他字符不能识别等等,所以使用了GRETA解决了那个问题
int CAddMaker::RegexMatch(CString strs,CString regex, CStringArray &result)
{
match_results results;
wstring str;
wstring reg;
str = strs.GetString();
reg = regex.GetString();
rpattern pat(reg, GLOBAL | ALLBACKREFS);
match_results::backref_type br = pat.match(str, results);
match_results::backref_vector vec = results.all_backrefs();
match_results::backref_vector::iterator iter;
CString sMatchResult;
for(iter = vec.begin();iter != vec.end();iter++)
{
string sResultSub(iter->begin(),iter->end());//修改
sMatchResult = sResultSub.c_str();//修改
result.Add(sMatchResult);
}
return 1;
}
待续,详细写。