1

我正在 4 Macbook 上测试以下代码。所有的 Macbook 都是最新的,其中 3 个是 10.8.4,它工作正常,但在我的 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

有没有人有任何新的想法?

4

1 回答 1

0

实际上,我认为我的代码中没有错误。错误出现在指向 regex.h 的错误链接上。曾经,我为 Windows 7 编写过代码,而 Windows 没有 /usr/include/regex.h 目录(概念),所以我在当前工作区中安装了 Windows 的 pcre 包和另一个与我的不兼容的 regex.h 文件我的macbook上的图书馆pcre。我清理了我的工作区,一切都恢复了正常。

于 2013-07-17T09:23:13.347 回答