在以下过度简化的代码示例中:
reg = "^[0-9]{1,10}$";
str = "123abc";
regcomp(&re, reg, REG_EXTENDED);
regexec(&re, str, 0, NULL, 0);
regexec
返回REG_NOMATCH
后,我想获得导致匹配失败的字符位置(上例中为3)。
答案 0 :(得分:0)
如果你想看看最后一个合适的东西,你可以试试所有合适的组合:
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)
但很容易;)
答案 1 :(得分:0)
看起来真的不可能。