为什么以下正则表达式不能使用regcomp在C中工作

时间:2014-11-28 12:07:12

标签: regex posix posix-ere

我有以下正则表达式来匹配字符串中的最后一对括号

.+(?={)(.+)(?=})

示例字符串是,

abc{abc=bcd}{gef=hij}

我想要在捕获的组内的最后一个大括号(gef = hij)内的内容。这适用于网络上的正则表达式测试程序

http://regexpal.com/

当我使用regcomp编译相同的正则表达式时,它不会。有什么想法吗?

int reti = regcomp(&regex, ".+(?={)(.+)(?=})", REG_EXTENDED);
if (reti) {
    fprintf(stderr, "Could not compile regex\n");
    exit(1);
}

2 个答案:

答案 0 :(得分:1)

无论如何,regcomp使用POSIX BRE或ERE,它不支持前瞻或后瞻。

.+{(.+)}

从组索引1中获取所需的字符串。

DEMO

答案 1 :(得分:-1)

使用锚点指定模式在行尾时应匹配。

(?<=[{]).*(?=[}]$)