使用正则表达式从结构化数据中提取数据

时间:2015-09-21 20:41:00

标签: json regex text structured-data

我面临的问题是我有一小段文本,其中包含结构化数据(以JSON有效载荷的形式),我有兴趣提取其中一个键的值一个特定的JSON实例,将结构化数据内部描述如下:

"项目1":{" key1":" item1_key1_value"," key2":" item1_key2_value", " key3":" item1_key3_value"},"项目2":{" key1":" item2_key1_value",&# 34; key2":" item2_key2_value"," key3":" item2_key3_value"}

我想使用的是使用正则表达式获取item1_key2_value。键都具有相同的名称,但项目是不同的。所以我知道哪个项需要哪个项但是我不太确定要检索该值的正则表达式。我已经尝试了一些基本匹配的方法但是想知道是否有其他更有经验的正则表达式用户可以指导我一点并解释我做错了什么

1(。)(?= item1_key2_value。)将匹配此处的一大块数据,但我不确定将其减少到我需要的值的最佳方法。

1 个答案:

答案 0 :(得分:0)

http://www.json.org明确指出了JSON的正则表达式语法。如果向下滚动一点到“字符串是一个序列”,你会发现正确的字符串结构。

假设字符串遵循正确的JSON结构,您可以使用

"key2"\s*:\s*"((\\.|[^\\"])*)"

其中\s表示空格,*表示0或更多次。 \\表示晃动(反斜杠)字符,后跟.(任何字符)。如果它没有遇到晃动,那么它会查找[^\\"],这意味着不会晃动或引用。

如果您想对JSON表单稍微严格一些,可以试试

"key2"\s*:\s*"((\\["\\/bfnrtu]|[^\\"])*)"
你可以看到

更紧密地跟随网页上的字符串形式。