正则表达式过滤JSON值

时间:2018-07-23 05:51:25

标签: json regex filter

大家好,我想使用正则表达式从一个大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++"}'

我想使用正则表达式从此数组获取文本和名称值

3 个答案:

答案 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`

演示:https://regex101.com/r/74hOO1/2

答案 2 :(得分:0)

您可以使用此正则表达式:

"name"\s?+:\s?+"?([\w+#\s]+)"?

提取其值,例如

如果您想要其他键(例如文本),请使用文本代替名称

"text"\s?+:\s?+"?([\w+#\s]+)"?

您将在第一组中找到键的值 在这里https://regex101.com/r/1ZSUph/1