我正在尝试创建一个正则表达式来评估以下划线开头的数字序列,如下所示:_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");
}
我也试过这个表达式:
result_exp = regcomp(&rx_t,"[[:digit:]]+",REG_NOSUB);
我使用了 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 );
关于带有 regexec() 的 C++ 正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20574895/