c正则表达式没有找到字符串

时间:2015-08-16 21:58:16

标签: c regex

我正在尝试用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(&regex, regex_str, 0); if (reti) { printf("Could not compile regex.\n"); exit(1); } /* Exec Regex */ reti = regexec(&regex, str, 0, NULL, 0); if (!reti) { printf("Match\n"); } else if (reti == REG_NOMATCH) { printf("No Match\n"); } else { regerror(reti, &regex, 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(&regex); return 0; } 语句:

No Match

这是我的代码:

{{1}}

我得到的结果是:{{1}}

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您可能需要转义匹配组:

char *regex_str = "\\(#include [\"<].*[\">]\\)";

这可能会归结为一种模式。