0

我在这里面临的问题是我有一个包含结构化数据(以 JSON 有效负载的形式)的文本块,并且我有兴趣提取特定 JSON 实例的键之一的值,如图里面的结构化数据如下:

“项目 1”:{“key1”:“item1_key1_value”,“key2”:“item1_key2_value”,“key3”:“item1_key3_value”},“项目 2”:{“key1”:“item2_key1_value”,“key2”:” item2_key2_value", "key3":"item2_key3_value"}

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

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

4

1 回答 1

0

JSON 的正则表达式语法在http://www.json.org中明确指定。如果你向下滚动一点到它说“一个字符串是一个序列”的地方,你会找到正确的字符串结构。

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

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

其中\s表示空格,*表示 0 次或多次。 \\表示一个 slosh(反斜杠)字符,后面可以跟.(任何字符)。如果它没有遇到晃动,那么它会寻找[^\\"],这意味着既不晃动也不报价。

如果您想对确切的 JSON 形式更加严格,可以尝试

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

您可以看到它更接近于网页上的字符串形式。

于 2015-09-21T23:00:14.363 回答