'?'不适用于C Posix正则表达式

时间:2015-08-14 04:51:38

标签: c regex

我正在尝试在C中用双引号提取字符串。例如:

String[100] = "Hi,\"This is awesome\" and \"So is this\""

我只需要找到第一场比赛,“这太棒了”。这就是我试过的,

regcomp(&preg, "\"(.*?)\"", REG_EXTENDED);
regexec(&preg, String, 2, regm, 0);

其中regm是匹配数组。

而不是"This is awesome",我将"This is awesome" and "So is this"作为匹配。

?中的(.*?)不应该限制reg exp找到第一个匹配项吗?

1 个答案:

答案 0 :(得分:5)

没有。显然,您撰写的这个.*?内容旨在成为一种非贪婪的重复"并来自Perl或其他语言(不确定哪个)。它在POSIX ERE中没有这么特殊的含义; ?只是多余的。而是尝试正确的表单:"\"([^\"]*)\""

POSIX ERE的规范可以在这里找到:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04