请教boost正则表达式的语法问题

菜头叔 2012-07-20 02:17:34
我要提取一串URL 格式如下:
http://***.***.***user_login_qp.php?uid=%BF%BC%C0%AD&pwd=7faac35ae7dcaddca9ef0c1b1c50e68a&flag=Test
要提取uid pwd flag 3个字段 请教一下各位大牛语法 能解释一下各字段的提取方法则更好,刚看boost伤不起...
...全文
102 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜头叔 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C/C++ code
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char sU[]="http://***.***.***user_login_qp.php?uid=%BF%BC%C0%AD&pwd=7faac35ae7dcaddca9ef0c1b1c50e68a&flag=Test";
char *g……
[/Quote]

zhao4zhong1 首先很感谢你写了那么多代码。这种方法我也会的- - ...
之所以发帖就是为了学习一下正则表达式。
有现成的且更好用的 为何不使用呢?还能增加自身的知识。再次感谢!
赵4老师 2012-07-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char sU[]="http://***.***.***user_login_qp.php?uid=%BF%BC%C0%AD&pwd=7faac35ae7dcaddca9ef0c1b1c50e68a&flag=Test";
char *getUrlParam(char *sUrl,char *sParam) {
char s[1024],*p,a[80];
int L,n,k;
static char v[80];

v[0]=0;
p=strchr(sUrl,'?');
if (!p) return v;
strncpy(s,p,1023);s[1023]=0;
s[0]='&';
a[0]='&';
strncpy(a+1,sParam,77);a[78]=0;
strcat(a,"=");
L=strlen(a);
p=strstr(s,a);
if (!p) return v;
p=p+L;
n=0;
while (1) {
if (p[n]=='&') {p[n]=0;break;}
if (p[n]==0) break;
if (n>=79) {p[n]=0;break;}
n++;
}
if (n>0) {
strcpy(a,p);
L=0;
p=a;
while (1) {
k=sscanf(p,"%%%2x",&n);
if (1==k) {
v[L++]=(char)n;
p+=3;
} else if (0==k) {
v[L++]=p[0];
p++;
} else break;
}
v[L]=0;
}
return v;
}
int main() {
printf("uid=%s\n",getUrlParam(sU,"uid"));
printf("pwd=%s\n",getUrlParam(sU,"pwd"));
printf("flag=%s\n",getUrlParam(sU,"flag"));
return 0;
}
//uid=考拉
//pwd=7faac35ae7dcaddca9ef0c1b1c50e68a
//flag=Test
kingdom_0 2012-07-20
  • 打赏
  • 举报
回复
根据 ?,&,&分割字符串

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧