在以下过度简化的代码示例中:

reg = "^[0-9]{1,10}$";
str = "123abc";
regcomp(&re, reg, REG_EXTENDED);
regexec(&re, str, 0, NULL, 0);


regexec返回REG_NOMATCH之后,我想获取导致匹配失败的字符的位置(在上面的示例中为3)。

最佳答案

如果要查看最适合的最后一个,请尝试所有适合的组合:

int count=1;
varReg=strdup("^[0-9]");
while (works(varReg)){
   aux=varReg;
   varReg=malloc(strlen(varReg)+1);
   sprintf(varReg,"%s%d",aux, count++);
   free(aux)
}
fprint ("fail in: %d\n", --count);


您需要构建bool works (char* regex)但很容易;)

07-26 05:15