我正在尝试用C创建一个正则表达式集合,但没有太大成功。
目前,我正在尝试使用以下正则表达式查找#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
char *regex_str = "(#include <.+>)|(#include \".+\")";
char *str = "#include <stdio.h>";
regex_t regex;
int reti;
int main() {
/* Compile Regex */
reti = regcomp(®ex, regex_str, 0);
if (reti) {
printf("Could not compile regex.\n");
exit(1);
}
/* Exec Regex */
reti = regexec(®ex, str, 0, NULL, 0);
if (!reti) {
printf("Match\n");
} else if (reti == REG_NOMATCH) {
printf("No Match\n");
} else {
regerror(reti, ®ex, str, sizeof(str));
printf("Regex match failed: %s\n", str);
exit(1);
}
/* Free compiled regular expression if you want to use the regex_t again */
regfree(®ex);
return 0;
}
语句:
No Match
这是我的代码:
{{1}}
我得到的结果是:{{1}}
我做错了什么?
答案 0 :(得分:3)
您可能需要转义匹配组:
char *regex_str = "\\(#include [\"<].*[\">]\\)";
这可能会归结为一种模式。