c - 如何使用此正则表达式避免 regcomp 错误 13?
问题描述
我想从这里使用正则表达式,但有点不同:
https://www.rfc-editor.org/rfc/rfc3986#appendix-B
我正在尝试这样:
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}).*
但正则表达式不同。
这个人的类似含义:
?、* 或 + 前面没有有效的正则表达式
我应该如何避免这个错误?我的正则表达式是否正确?
解决方案
<regex.h>
POSIX 正则表达式不支持环视。
您可以将前瞻中的简单模式匹配为消费模式,如果ret
是REG_NOMATCH
,则认为匹配有效:
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!!!");
}
推荐阅读
- google-app-engine - Google Cloud 错误报告的解析规则是什么?
- security - Workday 中这些任务的安全性,“创建财务摘要计划”和“编辑财务摘要计划”
- cudnn - 如何使用指定的 cuda 和 cudnn 构建 caffe2?
- python - Django-Ajax:这是将数据返回给 Ajax 请求的最 Pythonic 的吗?
- python - Python 字典:运行自定义函数
- c# - 如何从平面缓冲区模式中的任何表中检索字段
- node.js - 通过不同属性进行动态查询(Node.js)
- java - log4j2 日志没有被写入文件
- matlab - 如何找到可以从 MATLAB 中的分区访问的单元分区?
- angular - 具有不同属性名称的 Typescript 映射类型