📄 xregex.cpp
字号:
#include "StdAfx.h"
#include "XREGEX.h"
//本页源代码使用了ATL Server 中的正则表达式功能
bool XREGEX::GetChallengeText(char response[],XDATA * xdata)//获取challenge,用于生成登录URL
{
CAtlRegExp<> reCT;
reCT.Parse ("{challenge}[^<>]+value=\"{[^<>]+}\"");
CAtlREMatchContext<> mcCT;
if(reCT.Match (response,&mcCT)==false) return false;
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcCT.GetMatch(1, &szStart, &szEnd);
memset(xdata->ChallengeText,0,40);
strncpy(xdata->ChallengeText,szStart,szEnd-szStart);
return true;
}
void XREGEX::GetFileInfo(char response[],XDATA * xdata)//分析共享文件的信息
{
char p[200];
memset(p,0,200);
if(xdata->DownLoadCode .find (".part")!=-1)
{
sprintf(p,"{/ym/ShowLetter}[^<]+MsgId={[0-9_]+}[^<]+{%s![0-9]}",xdata->DownLoadCode .c_str ());
}
else
{
sprintf(p,"{/ym/ShowLetter}[^<]+MsgId={[0-9_]+}[^<]+{%s.part[0-9]+}",xdata->DownLoadCode .c_str ());
}
CAtlRegExp<> reCT;
CAtlREMatchContext<> mcCT;
reCT.Parse (p);
char i[300];
char f[300];
char u[300];
char *b=response;
while(reCT.Match (b,&mcCT))
{
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcCT.GetMatch(1, &szStart, &szEnd);
memset(i,0,300);
strncpy(i,szStart,szEnd-szStart);
xdata->VMsgId .push_back (i);
mcCT.GetMatch(2, &szStart, &szEnd);
memset(f,0,300);
strncpy(f,szStart,szEnd-szStart);
xdata->VFileName .push_back (f);
memset(u,0,300);
sprintf(u,"%sym/ShowLetter?box=Inbox&MsgId=%s&bodyPart=2&order=down",xdata->MailHostUrl .c_str (),i);
xdata->VFileDownLoadUrl .push_back (u);
b=(char *)szEnd;
}
}
bool XREGEX::GetDescribeUrl(const char response[],XDATA * xdata)//获取描述文件的URL
{
char p[200];
memset(p,0,200);
sprintf(p,"{/ym/ShowLetter}[^<]+MsgId={[0-9_]+}[^<]+{%s.describe}",xdata->DownLoadCode .c_str ());
CAtlRegExp<> reCT;
CAtlREMatchContext<> mcCT;
reCT.Parse (p);
if(reCT.Match (response,&mcCT)==false) return false;
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
char i[300];
char u[300];
mcCT.GetMatch(1, &szStart, &szEnd);
memset(i,0,300);
strncpy(i,szStart,szEnd-szStart);
memset(u,0,300);
sprintf(u,"%sym/ShowLetter?box=Inbox&MsgId=%s&bodyPart=2&order=down",xdata->MailHostUrl .c_str (),i);
xdata->DescribeUrl =u;
return true;
}
bool XREGEX::GetMailAndHostUrl(const char response[],XDATA * xdata)//获取邮箱的URL
{
char p[200];
memset(p,0,200);
strcpy(p,"{http://cn\.[^\.]+\.mail\.yahoo\.com/}");
CAtlRegExp<> reCT;
CAtlREMatchContext<> mcCT;
CAtlREMatchContext<>::MatchGroup mg;
reCT.Parse (p);
char s[100];
if(!reCT.Match (response,&mcCT)) return false;
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcCT.GetMatch(0, &szStart, &szEnd);
memset(s,0,100);
strncpy(s,szStart,szEnd-szStart);
xdata->MailHostUrl =s;
xdata->LogOutUrl =xdata->MailHostUrl +"ym/Logout";
memset(p,0,200);
strcpy(p,"{http://cn\.[^\.]+\.mail\.yahoo\.com/[^\"]+}");
reCT.Parse (p);
if(!reCT.Match (response,&mcCT)) return false;
mcCT.GetMatch(0, &szStart, &szEnd);
memset(s,0,100);
strncpy(s,szStart,szEnd-szStart);
xdata->MailUrl =s;
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -