请教boost正则表达式的语法问题
我要提取一串URL 格式如下:
http://***.***.***user_login_qp.php?uid=%BF%BC%C0%AD&pwd=7faac35ae7dcaddca9ef0c1b1c50e68a&flag=Test
要提取uid pwd flag 3个字段 请教一下各位大牛语法 能解释一下各字段的提取方法则更好,刚看boost伤不起...
[解决办法]
根据 ?,&,&分割字符串
[解决办法]
#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