在以下过度简化的代码示例中:
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)
但很容易;)