C中的正则表达式无法正常工作

时间:2014-02-16 14:52:57

标签: c regex posix

我正在开发一个涉及正则表达式的项目。这是我的代码(在C中):

#include <stdio.h>
#include <regex.h>
#include <stdlib.h>

int main(int argc, const char * argv[])
{

    regex_t regex;
    int reti;
    char msgbuf[100];

    /* Compile regular expression */
    reti = regcomp(&regex, "[0-9]+", 0);

    /* Execute regular expression */
    reti = regexec(&regex, "3", 0, NULL, 0);
    if( !reti ){
        puts("Match");
    }
    else if( reti == REG_NOMATCH ){
        puts("No match");
    }
    else{
        regerror(reti, &regex, msgbuf, sizeof(msgbuf));
        fprintf(stderr, "Regex match failed: %s\n", msgbuf);
        exit(1);
    }

    regfree(&regex);

    return 0;
}

我试图将它与各种正则表达式一起使用,但大多数都没有用。例如,正则表达式\d无效,因此我必须使用[0-9]+正则表达式也不起作用,我需要它,因为我必须匹配一个或多个数字。

我使用的是Mac OS X,如果有人可以提供帮助请。提前谢谢。

1 个答案:

答案 0 :(得分:3)

+修饰符不适用于BRE which is the default。将cflags设置为REG_EXTENDED

reti = regcomp(&regex, "[0-9]+", REG_EXTENDED);

此外,您可以使用字符类[:digit:]来匹配数字。 <{1}}未由POSIX定义,不起作用。

\d