如何使用此正则表达式避免regcomp错误13?

如何使用此正则表达式避免regcomp错误13?,c,regex,C,Regex,我想在这里使用正则表达式,但有一点不同: 我试着这样做: ret = regcomp(preg,"^(?!01418710[0-9]{2}).*", REG_EXTENDED); if (ret) { char errmsg[256]; regerror(ret, preg, errmsg, sizeof(errmsg)); printf("Error msg :%s (ret = %d) for regex:%s\n",errmsg,ret, prefix);

我想在这里使用正则表达式,但有一点不同:

我试着这样做:

ret = regcomp(preg,"^(?!01418710[0-9]{2}).*", REG_EXTENDED);
if (ret) {
    char errmsg[256];
    regerror(ret, preg, errmsg, sizeof(errmsg));
    printf("Error msg :%s (ret = %d) for regex:%s\n",errmsg,ret, prefix);
   return -1;
}
这是我的正则表达式:
^(?!01418710[0-9]{2})。*

但是我被
regcomp
的返回值卡住了:

REG_BADRPT
根据曼恩的说法,这意味着:

重复运算符的使用无效,例如使用“*”作为第一个字符

我目前可以通过
^(\?!01418710[0-9]{2})避免此错误。*
但是正则表达式是不同的

在这个人身上也有类似的意思:

?、*或+前面没有有效的正则表达式

我该如何避免这个错误呢?我的正则表达式正确吗?

POSIX正则表达式不支持查找

您可以将前面的简单模式匹配为一个消耗模式,如果<代码> ReT <代码>是代码> ReGyNoMaskC,请考虑匹配有效:

regex_t preg;
int ret;
ret = regcomp(&preg,"01418710[0-9]{2}", REG_EXTENDED);
... 
ret = regexec(&preg, "your_string", 0, NULL, 0);
if (ret == REG_NOMATCH) {
    printf("Matched!!!");
}

对不起,我的正则表达式有点变化。如何支持lookarounds?使用另一个regex库:PCRE、PCRE2、Boost等。非常感谢您的回答