全部 -
我喜欢正则表达式,但是当有多种类型的解析时,我会感到非常困惑。
我基本上是在尝试解析这样的数据:
{"classs":15,"commondrop":true,"id":7101,"level":1,"name":"7Z",
"slot":0,"source":[2],"subclass":0,
modes: { "mode":4,
"4": { "count":15862,"outof":36461 }
},
count:15862, stack:[1,1]
},
{"classs":15,"commondrop":true,"id":62530,"level":1,"name":"7Z",
"slot":0,"source":[2],"subclass":0,
modes:{ "mode":4,
"4":{ "count":13402,"outof":36461 }
},
count:13402,stack:[1,1]
},
{"classs":15,"commondrop":true,"id":3300,"level":5,"name":"7Rabbit's Foot",
"slot":0,"source":[2],"subclass":0,
modes:{"mode":4,
"4":{ "count":1,"outof":36461 }
},
count:1,stack:[1,1]
}
]});
由于有子括号({和}),我不完全确定如何获得外括号中的内容。所以我只是想从中得到它:
"classs":15,"commondrop":true,"id":7101,"level":1,"name":"7Z","slot":0,"source":[2],"subclass":0,modes:{"mode":4,"4":{"count":15862,"outof":36461}},count:15862,stack:[1,1]
(然后我可以进一步解析并将其分解更多)
这是否可以使用正则表达式?我开始尝试类似\{"classs"(.*?)\},{
之类的东西,但它错过了一些数据。
答案 0 :(得分:3)
使用正则表达式无法计算括号,因为这些不是常规语言。解决方案是使用解析表达式语法实现而不是RegEx。
答案 1 :(得分:0)
正则表达式在处理任何类型的嵌套方面都很糟糕,据我所知,任何可以递归嵌套的东西都是不可能的。相反,你应该使用适当的解析器。你有什么似乎是JSON(虽然它是无效的..我假设你粘贴的是不完整的)。 PHP有一个内置函数来解析它,json_decode
。
答案 2 :(得分:0)
为什么不使用json_decode()? 返回一个数组,你可以计算或预测它。