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

如何用正则分割含逗号的键值对字符串?避免错误拆分值内逗号

解决方法:用正则精准替换键值对分隔符

你的问题核心是要区分键值对之间的逗号和值内部的逗号,直接全量按逗号分割肯定会把值拆碎,用正则表达式完全可以搞定,而且是最简洁的方式。

具体步骤和代码示例

假设用Python实现:

  1. 先去掉字符串首尾的方括号
  2. 只把“分隔键值对的逗号”替换成分号,这些逗号的特征是后面跟着(可选空格+键名+等号)
import re

original_str = "[num=0388, name=karl,steve,moo, age=1]"
# 去掉首尾方括号
clean_str = original_str.strip('[]')
# 替换键值对之间的逗号为分号
result = re.sub(r',\s*(?=[a-z]+=)', ';', clean_str)
print(result)  # 输出:num=0388;name=karl,steve,moo;age=1

正则表达式解释

,\s*(?=[a-z]+=) 各部分含义:

  • ,:匹配目标逗号
  • \s*:匹配逗号后面可能存在的0个或多个空格(比如, name=里的空格)
  • (?=[a-z]+=):正向预查,确保逗号后面紧跟着“小写字母+等号”的键名开头,这样就不会误匹配值内部的逗号(比如karl,steve里的逗号,后面是steve不是键名)

如果你的键名可能包含大写字母,把正则改成,\s*(?=[A-Za-z]+=)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:55:19