我正在 4 台 Macbook 上测试以下代码。所有 Macbook 都是最新的 10.8.4 在其中的 3 个上,它工作正常,但在我的 Macbook 上却不行,我开始发疯了。 我不知道该怎么办了。
include <regex.h>
...
regex_t re;
char msgbuf[256]
int reti;
reti = regcomp( &re, ".*\\.xml", REG_EXTENDED | REG_NOSUB);
if( reti )
printf("Could not compile regex : %d\n", reti);
reti = regexec (&re, "a.xml", 0, 0, 0) ;
if( !reti )
puts("Match");
else if( reti == REG_NOMATCH )
puts("No match");
else{
regerror(reti, &re, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
}
这是输出:
Could not compile regex : 16
Regex match failed: invalid regular expression
我在所有 Macbook avec pcre 8.33 上都有 perl 5.12 我什至将 libpcre* 从工作的 macbook/usr/lib 复制到我的/usr/lib 它不起作用
我重新安装了pcre
我尝试了几个表达式,甚至是“.*”这样的简单表达式,答案总是:无效的正则表达式和 regcomp 的错误代码:16
有没有人有什么新想法?
最佳答案
实际上,我认为我的代码没有错误。错误是错误链接到 regex.h。有一次,我为 windows 7 编写了代码,而 windows 没有/usr/include/regex.h 目录(概念),所以我在当前工作区中安装了 windows 的 pcre 包,其中包含另一个与我的不兼容的 regex.h 文件我的 macbook 上的图书馆 pcre。我清理了工作区,一切恢复正常。
关于c - Regex C 代码不适用于我的 mac osx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17683398/