You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#正则表达式提取含嵌套结构键值对的实现问题求助

正则修改方案

你可以使用如下正则实现预期的键值对提取:

"(?<key>\w+)"=(?<value>(?:{[^}]*}|"[^"]*"|[^,]+))

匹配逻辑说明

  • key分组保持原有逻辑,匹配双引号包裹的键名
  • value分组通过多分支规则实现不同类型值的完整匹配:
    • 分支1 {[^}]*}:匹配被大括号包裹的所有内容,自动跳过大括号内部的逗号,不会提前截断
    • 分支2 "[^"]*":匹配被双引号包裹的字符串,避免字符串内部的逗号被误识别为键值对分隔符
    • 分支3 [^,]+:匹配非大括号、非引号包裹的普通值(如数字),直到遇到下一个分隔逗号为止

原正则错误原因

你之前使用的{?"?[^,]*"?}?逻辑未对大括号场景做特殊处理,只要扫描到逗号就会终止value的匹配,因此大括号内部的逗号会被误判为键值对分隔符,导致key3的value被拆分、subkey2被识别为新键的错误结果。

扩展适配说明

如果你的数据存在大括号嵌套的情况,需要使用支持递归匹配的正则引擎(如PCRE2),将大括号匹配分支替换为{(?R)*[^}]*}即可支持多层嵌套大括号的提取场景。

内容的提问来源于stack exchange,提问作者Lovetakingphoto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:18:01