Fedora12下C语言正则表达式匹配数字字符结果不正确
如题,自认为正确的正则表达式,匹配结果却不对。源码:
#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(®, pattern, cflags); status = regexec(®, 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(®); return 0;}