Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 正则表达式执行在第一次匹配时停止_C_Regex - Fatal编程技术网

C 正则表达式执行在第一次匹配时停止

C 正则表达式执行在第一次匹配时停止,c,regex,C,Regex,我有一段C代码: size_t N_MATCH = 5; regex_t* finder = (regex_t*)malloc(sizeof(regex_t)); if (0 != regcomp(finder, "_v_[0-9]{1,10}", REG_EXTENDED)) { fprintf(stderr, "Error in compiling regular expression\n"); exit(1); } 这个测试字符串:

我有一段C代码:

size_t N_MATCH = 5;
regex_t* finder = (regex_t*)malloc(sizeof(regex_t));
if (0 != regcomp(finder, "_v_[0-9]{1,10}", REG_EXTENDED)) {
    fprintf(stderr, "Error in compiling regular expression\n");
    exit(1);
}
这个测试字符串:

char* str = " _v_349853242543543532542 some text blabla _v_134567895324 _v_4332 some other text";
但当我执行

regexec(&finder, str1, N_MATCH, match, 0);
结果是,除了
0
(或者,换句话说,只弹出一个匹配项)之外,每个
i
都有
match[i].rm_eo==match[i].rm_so
。 我知道有很多Queston被要求解决这个问题,但如果我能得到我期望的结果,我就不会再问这个问题了。特别是以下是我的(失败的)试验:


regexec
没有
g
选项。您必须在循环中调用
regexec
。看看这个例子:

regcomp(finder, "_v_[0-9]{1,10}?", REG_EXTENDED);
regcomp(finder, "(_v_[0-9]{1,10})?", REG_EXTENDED);
regcomp(finder, "_v_[0-9]{1,10}*", REG_EXTENDED);
regcomp(finder, "(_v_[0-9]{1,10})*", REG_EXTENDED);
regcomp(finder, "_v_[0-9]{1,10}+", REG_EXTENDED);
regcomp(finder, "(_v_[0-9]{1,10})+", REG_EXTENDED);