利用平衡组匹配完整的json时,可能会遇到字符串中包含大括号的情况,比如: 文本: {"abc":"12}3","efg":{}} 正则: (?<Json>{[^{}]*(?:(?:(?'op'{)[^{}]*)+(?:(?'-op'})[^{}]*)+)*(?(op)(?!))})
{"abc":"12}3","efg":{}}
(?<Json>{[^{}]*(?:(?:(?'op'{)[^{}]*)+(?:(?'-op'})[^{}]*)+)*(?(op)(?!))})
这种情况下会匹配错,因为"12}3"中的括号其实只是文本,不能当作括号,求高手指点。 不是不想多给园豆,实在是没有了。
先做词法分析,识别出字符串,再想办法匹配括号。 这个问题很难一蹴而就。