c - 开始 (^) 和结束 ($) 锚点不起作用
问题描述
基本上我在我的 C 程序中使用以下模式(请参阅正则表达式匹配无限模式):
^[0-9]( [0-9])*$
使用以下代码:
char *pattern = "^[0-9]( [0-9])*$";
regex_t regexCompiled;
int rc = regcomp(®exCompiled, pattern, REG_EXTENDED);
if (rc != 0) {
char msgbuf[100];
regerror(rc, ®exCompiled, msgbuf, sizeof (msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(EXIT_FAILURE);
}
if (regexec(®exCompiled, "0 1", 0, NULL, REG_EXTENDED) == 0) {
printf("Valid\n");
} else {
printf("Invalid\n");
}
我对字符串“0 1”执行的地方,这对模式有效,但它不起作用。'^' 和 '$' 不起作用。这是为什么?我怎样才能让它工作?
解决方案
您正在传递REG_EXTENDED
给regexec()
,这不是该调用的有效标志。
手册页说:
eflags 可能是其中之一或两者的按位或,
REG_NOTBOL
它REG_NOTEOL
会导致下面描述的匹配行为发生变化。
REG_EXTENDED
可能与其中之一匹配的实际值。
更改要0
作为最终参数传递的代码以regexec()
使其匹配。
推荐阅读
- lua - 如何将我的 ESP8266 闪回,已经写入它?
- php - 所有客户都在一个数据库或单独的数据库中?
- c++ - 由于线程冲突 Qt C++,Google 语音识别不起作用
- javascript - Vuejs 搜索栏过滤器不返回结果
- php - PHP: convert date time variable into date
- c# - 使用 SSIS 中的 Selenium 执行 c# 控制台应用程序
- java - 用Jsteg方法替换DCT中的LSB后如何保存jpeg图像?
- angular - MEAN (SPA) 简单授权
- merge - combineLatest 组合或合并 Observables 的替代方法
- spring - 为 Spring Web 客户端添加异常处理程序