C語言是一門強大的編程語言,在實際開發過程中,經常需要處理各種數據格式。其中,JSON格式數據應用最為廣泛,而正則表達式則是一種強大的文本分析工具。那么,如何使用C語言中的正則表達式來解析JSON格式數據呢?接下來,我們將給您介紹一些實用的技巧。
#include <stdio.h> #include <stdlib.h> #include <regex.h> #define MAX_MATCH 10 #define MAX_LENGTH 1024 typedef struct JsonPair { char* key; char* value; } JsonPair; void parseJson(char* str, JsonPair* pairs, int* count) { regex_t reg; regmatch_t matches[MAX_MATCH]; char pattern[MAX_LENGTH] = "\"([^\"]*)\":\"([^\"]*)\""; if (regcomp(®, pattern, REG_EXTENDED) != 0) { printf("Compile Failed!\n"); exit(1); } int offset = 0; *count = 0; while (regexec(®, str + offset, MAX_MATCH, matches, 0) == 0) { pairs[*count].key = strndup(str + offset + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so); pairs[*count].value = strndup(str + offset + matches[2].rm_so, matches[2].rm_eo - matches[2].rm_so); offset += matches[2].rm_eo; (*count)++; } regfree(®); } int main() { char* str = "{\"name\":\"Tom\",\"age\":\"18\",\"gender\":\"male\",\"score\":\"90\"}"; JsonPair pairs[MAX_LENGTH]; int count; parseJson(str, pairs, &count); printf("Parse Results:\n"); int i; for (i = 0; i< count; i++) { printf("Key: %s\nValue: %s\n", pairs[i].key, pairs[i].value); } return 0; }
上述代碼中,我們使用了正則表達式的基本知識,將匹配結果保存在JsonPair結構體數組中。在實際開發中,我們可以根據需要修改正則表達式的匹配規則,靈活地解析JSON格式數據。同時,我們也可以通過正則表達式完成其他文本分析任務,豐富C語言的功能,提高開發效率。