- 论坛徽章:
- 0
|
原帖由 ExclusivePig 于 2009-9-15 14:44 发表
跪求高手继续解释。。。我目前在用prce库,但总是只能匹配一个结果,对于多个匹配无法得到,我用的是pcre_compile,和prce_exec
给你一个程序吧,把环境变量里的$展开:
- static char env_src[]="\\$[{(]{0,1}([A-Za-z_][0-9A-Za-z_]*)[})]{0,1}";
- int substitute_env(char *line)
- {
- char env[256];
- char *p=line,*envp,*getenv();
- regmatch_t pmatch[REGNUM];
- int i;
- if(!line) return 0;
- while(!(i=regexec(&env_rp,p,REGNUM,pmatch,0))) { //匹配多个
- for(envp=p+pmatch[1].rm_so;envp<p+pmatch[1].rm_eo;envp++) {
- env[i++]=*envp;
- }
- env[i]=0;
- envp=getenv(env);
- if(!envp) envp=".";
- p=strsubst(p+pmatch[0].rm_so, pmatch[0].rm_eo - pmatch[0].rm_so,envp);//p指向替换后的地址,下一轮从此开始继续匹配
- }
- return 0;
- }
复制代码
唉,这问题也问?能匹配1个就能匹配多个,程序处理呗。
[ 本帖最后由 yulihua49 于 2009-11-2 15:21 编辑 ] |
|