使用正则表达式

时间:2019-01-11 17:45:42

标签: regex

我下面有一个json

  

{“ name”:“ abc”,“ config”:{“ key”:1,“ value”:“ one”,“ detail”:{“ message”:   “测试”}}}

我需要使用正则表达式获取整个配置元素,即 "config":{"key":1,"value":"one","detail":{"message": "testing"}} ,我不想使用任何json解析器,该配置可以包含任意数量的嵌套元素

我尝试使用正则表达式模式- "config":{.*} ,但由于贪婪,它一直获取到最后}

非常感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您可以使用此

"config":[\s\S]+?}(?=[,}])}

此处[\s\S]+?将匹配(惰性模式)后跟} or ,的所有内容

Demo

答案 1 :(得分:1)

好的。我能够得到一个可行的解决方案,但是需要两个正则表达式来完成。

第一步,抢占"config"之后的所有内容。使用捕获组1的内容:

"config":({.*})

Demo of Regex 1

第二步,使用递归正则表达式匹配平衡结构,在“平衡结构”部分中对此here进行更多检查。它使用递归来找到与"config":之后的开头大括号相对应的结尾大括号。使用匹配1的内容:

{(?>[^{}]|(?R))*}

Demo of Regex 2