【发布时间】:2018-09-03 21:17:31
【问题描述】:
这是我遇到问题的 C 函数:
char get_access_token(char *client_credentials)
{
regex_t regex;
int reti;
char msgbuf[100];
reti = regcomp(®ex, "\\\"access_token\\\".\\\"(.*?)\\\"", 0);
regmatch_t pmatch[1];
if (reti) {
fprintf(stderr, "Could not compile regex\n");
exit(1);
}
reti = regexec(®ex, client_credentials, 1, pmatch, 0);
if (!reti) {
puts("Match");
} else if (reti == REG_NOMATCH) {
puts("No match");
} else {
regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(1);
}
return (char) "";
}
我要解析的字符串是 JSON 字符串,我不关心实际结构我只关心访问令牌。
应该是这样的:
{"access_token": "blablablabal"}
我希望我的函数只返回“blablablabla”
我正在尝试使用的 RegEx 是这个:
\"access_token"."(.*?)"
但是我在变量pmatch 中找不到,我只在那个数组中找到了两个数字,我真的不知道这些数字是什么意思。
我做错了什么?
附:我是C菜鸟,我只是在学习。
【问题讨论】: