首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Fedora12下C语言正则表达式匹配数字字符结果不正确,该怎么处理

2012-03-08 
Fedora12下C语言正则表达式匹配数字字符结果不正确如题,自认为正确的正则表达式,匹配结果却不对。源码:C/C+

Fedora12下C语言正则表达式匹配数字字符结果不正确
如题,自认为正确的正则表达式,匹配结果却不对。源码:

C/C++ code
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <regex.h>// 提取匹配的子串char* mysub(const char *str, regmatch_t *pmatch){    static char ret[100];    int len = pmatch->rm_eo - pmatch->rm_so;    strncpy(ret, str+pmatch->rm_so, len);        return ret;}int main(int argc, char **argv){    int status, i;    int cflags = REG_EXTENDED;    regmatch_t pmatch[1];    const size_t nmatch = 1;    regex_t reg;    const char *pattern = "\\d+";    // 想匹配数字字符    char *buf = "david19842003@gmail.com";    regcomp(&reg, pattern, cflags);    status = regexec(&reg, buf, nmatch, pmatch, 0);    if(status == REG_NOMATCH)        printf("No match\n");    else if(status == 0)    {        printf("Match:\n");        printf("%d, %d\n", pmatch[0].rm_so, pmatch[0].rm_eo);        char *pret = mysub(buf, pmatch);        printf("%d: %s\n", strlen(pret), pret);    }    regfree(&reg);    return 0;}


运行结果:
[zcm@t #9]$make
gcc -g -c -o a.o a.c
gcc -g -o a a.o
[zcm@t #10]$./a
Match:
0, 1
1: d
[zcm@t #11]$

[解决办法]
不同语言对正则的规范不一样,或许可以找找所用正则库的说明文件,看看有没有\d这个meta

热点排行