一、JSON概述
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,由JavaScript語言創建,但也包含其他編程語言的語法元素。JSON結構由「名稱:值」對組成,其中名稱是字元串,值可以是字元串、數字、布爾值、null、對象或數組。
例如:
{ "name": "小明", "age": 18, "hobby": ["football", "basketball"], "contact": { "phone": "123456789", "email": "xiaoming@mail.com" } }
JSON在Web開發中廣泛應用,伺服器和客戶端之間的數據傳輸、AJAX等均可使用JSON格式。
二、JSON正則表達式
在處理JSON數據時,我們需要對數據進行各種各樣的操作,其中包括對字元串進行解析、匹配、提取等等。這時,我們就需要使用正則表達式。
JSON正則表達式主要包括兩方面內容:1、匹配JSON中的特定字元;2、提取JSON中的特定內容。
三、匹配JSON中的特定字元
匹配JSON中的特定字元可以幫助我們定位到需要操作的數據,主要包括以下方面:
1、匹配JSON中的鍵名
匹配JSON中的鍵名可以用於查找特定的鍵值對,例如查找所有名字為age的鍵值對。
正則表達式示例:
"age":\s*\d+
該正則表達式匹配所有名字為age的鍵值對,其中\s表示匹配空格,\d+表示匹配1個或多個數字。
2、匹配JSON中的鍵值
匹配JSON中的鍵值可以用於查找特定的鍵對應的值,例如查找所有值為18的鍵值對。
正則表達式示例:
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
該正則表達式匹配所有IP地址。
3、匹配JSON中的數組元素
匹配JSON中的數組元素可以用於查找特定的數組元素,例如查找所有喜歡籃球的人。
正則表達式示例:
"contact":\s*{\s*"phone":\s*"\d{9}",\s*"email":\s*"[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]{2,4}"\s*}\s*
該正則表達式匹配所有聯繫方式為{“phone”: “…”, “email”: “…”}的數據。
四、提取JSON中的特定內容
除了匹配JSON中的特定字元,我們還需要從JSON中提取特定的內容,主要包括以下方面:
1、提取JSON中的鍵值對
提取JSON中的鍵值對可以用於查找特定的鍵值對,例如提取名字為age的鍵值對。
正則表達式示例:
(?:^|,)\s*\K"[^"]*"\s*:\s*(?:"(?:\\.|[^\\"])*"|true|false|null|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)\s*
該正則表達式匹配所有符合JSON結構的鍵值對。
2、提取JSON中的數組元素
提取JSON中的數組元素可以用於查找特定的數組元素,例如提取所有喜歡籃球的人。
正則表達式示例:
(?<="hobby":\s*\[)(?:"[^"]*",?\s*)*?\K"basketball"(?=\s*\])
該正則表達式提取所有喜歡籃球的人所在的JSON數據。
3、提取JSON中的子對象
提取JSON中的子對象可以用於查找特定的子對象,例如提取所有聯繫方式為{“phone”: “…”, “email”: “…”}的人所在的JSON數據。
正則表達式示例:
(?<=\{)[^{}]*(?=\{(?:[^{}]*\{[^{}]*\}[^{}]*)*\s*"phone":\s*"\d{9}"\s*,\s*"email":\s*"[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]{2,4}"\s*\}(?:[^{}]*\{[^{}]*\}[^{}]*)*\s*\})
該正則表達式提取所有符合條件的JSON數據。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293585.html