如何使用此正则表达式避免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等。非常感谢您的回答