大家好,我想使用正则表达式从一个大json数组中获取两个值。 例如:我有这个json数组
'{"data":"1233","image":"dsfsdfsdfds"."text":"hello world"."name": "java"}'
'{"data":"1233df","image":"dsfsdfsdfsdfds"."text":"hello world"."name": "c#"}'
'{"data":"1233sds","image":"dsfsdferesdfds"."text":"hello world"."name": "python"}'
'{"data":"1sd233","image":"dsfsdfsdfrdfds"."text":"hello world"."name": "c++"}'
我想使用正则表达式从此数组获取文本和名称值
答案 0 :(得分:1)
var data = '{"data":"1233","image":"dsfsdfsdfds", "text":"hello world", "name": "java"}';
var parsedData = JSON.parse(data);
var text = parsedData.text;
var name = parsedData.name;
答案 1 :(得分:1)
您不应使用正则表达式解析JSON。如果您使用Javascript,则可以通过parse
之类的内置函数来解析JSON;如果您使用GSON
,则可以通过JAVA
之类的其他库来解析JSON。
不过,如果在此处使用Regex有任何特殊要求,则可以在下面使用:
1)对于文本:
.*?text"\s?:\s?"([\w\s]+)
输出:
Group 1 - 'hello world'
2)为名字
.*?name"\s?:\s?"([\w\s]+)
输出:
Group 1 - java
演示:https://regex101.com/r/74hOO1/1
-编辑-
如果您想在一个正则表达式中同时使用文本和名称,则可以在下面使用一个,只要文本始终位于名称之前:
.*?text"\s?:\s?"([\w\s]+).*?name"\s?:\s?"([\w\s]+)
输出:
Group 1. 46-57 `hello world`
Group 2. 68-72 `java`
答案 2 :(得分:0)
您可以使用此正则表达式:
"name"\s?+:\s?+"?([\w+#\s]+)"?
提取其值,例如
如果您想要其他键(例如文本),请使用文本代替名称
"text"\s?+:\s?+"?([\w+#\s]+)"?
您将在第一组中找到键的值 在这里https://regex101.com/r/1ZSUph/1