C++ C++;带有regexec()don';不匹配

C++ C++;带有regexec()don';不匹配,c++,c,regex,C++,C,Regex,我试图用一个正则表达式来计算以下划线开头的数字序列,如下所示:_201312 我对数字部分有问题;我总是收到REG_NOMATCH消息。 代码如下: #include <regex.h> int result_exp,flag_buffer=0; regex_t rx_t; regmatch_t match[10]; result_exp = regcomp(&rx_t,"^[0-9]+$",REG_NOSUB); // if(result_exp==0){ pri

我试图用一个正则表达式来计算以下划线开头的数字序列,如下所示:_201312 我对数字部分有问题;我总是收到REG_NOMATCH消息。 代码如下:

#include <regex.h>

int result_exp,flag_buffer=0;
regex_t rx_t;
regmatch_t match[10];
result_exp = regcomp(&rx_t,"^[0-9]+$",REG_NOSUB); //
if(result_exp==0){
    printf("result_exp es 0\n");
}else if(result_exp == REG_BADBR){
    printf("REG_BADBR\n");
}else if(result_exp == REG_BADPAT){
    printf("REG_BADPAT\n");
}
result_exp = regexec(&rx_t, tableName.c_str(), 0, 0, 0);
if(result_exp==0){ //match
    flag_buffer=1;  
}else if(result_exp == REG_NOMATCH){
    printf("REG_NOMATCH\n");
}
我使用了REG_NOSUB标志,然后我没有,结果是一样的

你知道吗

谢谢你试试这个

   regmatch_t m[1];
   regex_t r;

   if ( regcomp( &r,"^_[0-9]+", REG_EXTENDED ) != 0 ) {
        printf("failed create regexp\n");
   }

   regexec( &r, "_2211231", 1, m, 0 );

那么uIt必须在右边的正则表达式中,因为您是以“^”开头的呢?把正则表达式改为“^ [09] + $”怎么样?这看起来像普通C,为什么C++中的标题和标签?
   regmatch_t m[1];
   regex_t r;

   if ( regcomp( &r,"^_[0-9]+", REG_EXTENDED ) != 0 ) {
        printf("failed create regexp\n");
   }

   regexec( &r, "_2211231", 1, m, 0 );