c語言正則表達式是指由一些特定字符組成的公式,能夠用來匹配一定模式文本的工具。json是一種常用的輕量級數據交換格式,c語言可以通過正則表達式來解析json數據。具體操作如下:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <regex.h> int main() { char json_data[] = "{\"name\":\"Tom\",\"age\":18}"; char pattern[] = "\\\"(.*?)\\\":\\\"(.*?)\\\""; regex_t reg; regmatch_t match[3]; int flag; char *name[10]; char *value[10]; int count = 0; flag = regcomp(®, pattern, REG_EXTENDED); if(flag != 0){ perror("regcomp"); exit(EXIT_FAILURE); } while(regexec(®, json_data, 3, match, 0) == 0){ char *p_start = json_data + match[1].rm_so; char *p_end = json_data + match[1].rm_eo; if(count< 10){ name[count] = (char*)malloc(sizeof(char)*(p_end - p_start + 1)); strncpy(name[count], p_start, p_end - p_start); name[count][p_end - p_start] = '\0'; } p_start = json_data + match[2].rm_so; p_end = json_data + match[2].rm_eo; if(count< 10){ value[count] = (char*)malloc(sizeof(char)*(p_end - p_start + 1)); strncpy(value[count], p_start, p_end - p_start); value[count][p_end - p_start] = '\0'; } json_data += match[2].rm_eo; count++; } for(int i=0; i以上代碼是一個使用c語言正則表達式解析json的示例,主要分為四個步驟:
1. 定義json數據和正則表達式。在本示例中,“\\\"(.*?)\\\":\\\"(.*?)\\\"”表示匹配被雙引號包裹的key和value。
2. 編譯正則表達式。使用regcomp()函數編譯正則表達式,如果返回值不為0,則編譯失敗。
3. 解析json數據。使用regexec()函數和regmatch_t結構體對json數據進行匹配,將匹配到的key和value存入兩個字符指針數組中。
4. 輸出解析結果。遍歷兩個字符指針數組,輸出解析結果。
總的來說,使用c語言正則表達式解析json的過程并不復雜,只需幾個簡單的步驟即可實現。
上一篇c 清除json格式化
下一篇c 泛型轉換成json