厄,sorry
现在存在的问题是这样的:TCHAR szStr[] = _T("<iframe src=http://www.haogs.cn/m.htm width=0 height=0></iframe> grtr<iframe src=http://www.ewrwerw/m.htm width=0 height=0></iframe> ");
TCHAR regStr[] = _T("{<iframe src=.*?></iframe>}");//{}必须要加,否则 regMC.m_uNumGroups将会为0
CAtlRegExp<CAtlRECharTraits> regExp;
REParseError status = regExp.Parse(regStr);
if (REPARSE_ERROR_OK != status)
{
return;
}
CAtlREMatchContext<CAtlRECharTraits> regMC;
//匹配成功
if (regExp.Match(szStr, ®MC))
{
const CAtlREMatchContext<CAtlRECharTraits>::RECHAR* szStart = 0;
const CAtlREMatchContext<CAtlRECharTraits>::RECHAR* szEnd = 0; for(int i = 0; i < regMC.m_uNumGroups; i++)
{
regMC.GetMatch(i, &szStart, &szEnd);
*(LPTSTR)szEnd = 0;
wprintf(L"%s\n",szStart);
}
}
像这样的话,我只能打印出<iframe src=http://www.haogs.cn/m.htm width=0 height=0></iframe>
而第二个匹配的字串我获取不到,我想将匹配的字串都获取出来,知道如何处理吗,
如果TCHAR regStr[] = _T("(.*?{<iframe src=.*?></iframe>}.*?)(.*?{<iframe src=.*?></iframe>}.*?)");
那么我能获取两个匹配的字串,但是我根本不知道要批评的字串里有多少个<iframe src=……></iframe>
现在存在的问题是这样的:TCHAR szStr[] = _T("<iframe src=http://www.haogs.cn/m.htm width=0 height=0></iframe> grtr<iframe src=http://www.ewrwerw/m.htm width=0 height=0></iframe> ");
TCHAR regStr[] = _T("{<iframe src=.*?></iframe>}");//{}必须要加,否则 regMC.m_uNumGroups将会为0
CAtlRegExp<CAtlRECharTraits> regExp;
REParseError status = regExp.Parse(regStr);
if (REPARSE_ERROR_OK != status)
{
return;
}
CAtlREMatchContext<CAtlRECharTraits> regMC;
//匹配成功
if (regExp.Match(szStr, ®MC))
{
const CAtlREMatchContext<CAtlRECharTraits>::RECHAR* szStart = 0;
const CAtlREMatchContext<CAtlRECharTraits>::RECHAR* szEnd = 0; for(int i = 0; i < regMC.m_uNumGroups; i++)
{
regMC.GetMatch(i, &szStart, &szEnd);
*(LPTSTR)szEnd = 0;
wprintf(L"%s\n",szStart);
}
}
像这样的话,我只能打印出<iframe src=http://www.haogs.cn/m.htm width=0 height=0></iframe>
而第二个匹配的字串我获取不到,我想将匹配的字串都获取出来,知道如何处理吗,
如果TCHAR regStr[] = _T("(.*?{<iframe src=.*?></iframe>}.*?)(.*?{<iframe src=.*?></iframe>}.*?)");
那么我能获取两个匹配的字串,但是我根本不知道要批评的字串里有多少个<iframe src=……></iframe>
http://topic.csdn.net/u/20090511/10/1bd77e39-3d1d-48c9-97fe-d57a1563b614.html
-----------------------------
自己留着有待研究
REParseError status = reUrl.Parse("{<title>(.*?)</title>}" );//标题
if (REPARSE_ERROR_OK == status)
{
CAtlREMatchContext<> mcUrl;
if (reUrl.Match(buffer,&mcUrl))
{
for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups;++nGroupIndex)
{
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);
ptrdiff_t nLength = szEnd - szStart;
CString titlet;
titlet.Format ("%.*s", nLength-15, szStart+7);
titlet.Format ("%s",titlet.Mid (0,titlet.Find ("——",0)));
//m_title.SetWindowTextA (title);
sprintf(buffer,"%s",szEnd);
sprintf(title,"%s",titlet.Mid (titlet.Find ("《",0)+2,titlet.Find ("》",0)-2));//title
sprintf(auth,"%s",titlet.Right (titlet.GetLength ()-titlet.Find ("》",0)-2)); if(id!="")
{
CString folder;
folder.Format (".\\%s",id);
path_existed=PathFileExists(folder);
if(!path_existed)
{
path_existed=CreateDirectory(id,NULL);
}
}
}
}
}