0

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

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

示例字符串是,

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);
}
4

2 回答 2

1

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

.+{(.+)}

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

演示

于 2014-11-28T12:13:37.750 回答
-1

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

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

于 2014-11-28T12:10:09.987 回答