自己写的解析JSON的正则,还有一点点小疑点,请帮忙看下

自己写的解析JSON的正则,还有一点点小问题,请帮忙看下
JSON:{"id":45009,"msg":"api freq out of limit"}
{"id":"45009,122,333","errmsg":"api freq out of limit"}

正则:"?([^",]+)"?:\s?["']?([^"'}]*)["']?
这样取值第一个JSON的ID结果是45009, 多了一个逗号,取第2个json的值就是对的 45009,122,333
如果改一下:正则:"?([^",]+)"?:\s?["']?([^"',}]*)["']?。这样改了,第一个json取值就对了,第二个json取值就不对,只取到了45009 后面的,122,333都没了

怎么做才能两个json取值都能正确
------解决思路----------------------
[^"',}]
^在方括号内表示非,你加上逗号,就表示不能是逗号,当然45009,122,333就只能取到第一个逗号之前的了
------解决思路----------------------
(?<k1>")\w+\k1:(?<k2>['"]?)?[\s\S]*?\k2(?=[,}\]])

------解决思路----------------------
这本来就不是词法匹配的事儿,这是语法分析的技术。你拿一个只会简单地匹配字眼儿的方法来进行语法分析,自然是连这种刚开始写几个字符的小case都解析不过去、处处是坑。比如说我在你的基础上随便加点芝麻粒,比如
{"id":"1,2,3,\"4\""}
你考虑了吗?等你的“正则”修改了20遍之后,任何人都能随便再举出20种你根本会被正则搞“疯掉”的。

这种东西,如果你不会进行语法分析,就不要瞎写什么工具。

人家的语法规范,是将简单的字眼儿进行了多层次的抽象,然后为不同层次抽象的机制分别编写不同的自动机,然后在建立了语法树之后再进行统一的(可以应付千变万化的个性的)属性计算。

如果你是在一个对功能复杂的产品研发中,需要解析任何流行的东西,不论是xml、json、html等等,应该使用语法分析工具。使用正则的都是蒙自己呢。