有没有办法在regexec调用后获得第一个不匹配字符的位置

时间:2015-02-16 00:46:51

标签: c regex

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

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

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

2 个答案:

答案 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)

看起来真的不可能。