我正在尝试在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找到第一个匹配项吗?
答案 0 :(得分:5)
没有。显然,您撰写的这个.*?
内容旨在成为一种非贪婪的重复"并来自Perl或其他语言(不确定哪个)。它在POSIX ERE中没有这么特殊的含义; ?
只是多余的。而是尝试正确的表单:"\"([^\"]*)\""
POSIX ERE的规范可以在这里找到:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04