我有以下JSON,我希望在文件JSON Array之外找到id值(在本例中为1234)。在这种情况下,正则表达式会是什么?
{
"id":"abc1234",
"name":"test",
"files":[
{
"id":"abc1",
"name":"test1"
},
{
"id":"abc2",
"name":"test2"
}
]
}
请注意,JSON字段的保证顺序不正确,因此外部id字段可能位于文件JSON数组之后。
以下捕获它的第一个实例,但我需要以某种方式否定文件JSON数组中的匹配。
\b(?:id":")(\w+)\b
答案 0 :(得分:0)
我不会使用正则表达式来解决您的问题,而是使用JSON解析器。
但是,如果你想使用正则表达式,你可以使用这样的东西:
id":"(\d+).*files|files.*id":"(\d+)
<强> Working demo 强>
答案 1 :(得分:0)
我认为正则表达式在解析JSON时并不是一个好的选择,并且很多时候都在解释为什么它不是一个好主意,但最终它取决于你将使用什么,所以如果为了一些神秘如果你决定使用正则表达式,你可以试试:
(\s*)\{\s\n(?=(\s+))[\s\S]*?^\2"id":"(?<ID>\d+)"[\s\S]*?^\1\}
它匹配整个部分,但您将在ID组中获得所需的值。