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

正则表达式问题:提取含逗号的键值对并保留值内逗号

提取含逗号值的键值对并拆分换行

你的问题核心是要区分分隔键值对的逗号和值里包含的逗号,之前的正则把所有逗号都当成了分隔符,所以截断了c2的值。

正确的正则表达式

用正向预查精准判断键值对的结束位置:

(\w+)\s*=\s*(.*?)(?=, \w+ =|$)

正则说明

  • (\w+):捕获键名(比如c1、c2),支持字母、数字、下划线
  • \s*=\s*:匹配等号,前后允许任意空格(兼容c1=7634或c1 = 7634这类格式)
  • (.*?):非贪婪捕获值的内容,直到遇到后面的终止条件
  • (?=, \w+ =|$):正向预查,只在后面是, 键名 =(比如, c3 =)或者字符串结尾时停止,这样就不会把值里的逗号当成分隔符

替换方法

把匹配到的内容替换为 $1 = $2\n(部分工具里捕获组引用符号为\1,比如VS Code),就能让每个键值对单独换行。

示例验证

输入字符串:

c1 = 7634, c2 = a,b, c3 = 8gd_, c4 = e,78

替换后输出:

c1 = 7634
c2 = a,b
c3 = 8gd_
c4 = e,78

之前正则的问题

你用的(\w+)\s*=\s*((?:[^,].*?[^,])?)有两个明显问题:

  1. 用[^,]限制值的首尾不能是逗号,导致如果值以逗号开头/结尾会被截断
  2. .*?非贪婪匹配遇到第一个逗号就停止,直接把c2的值截断成了a,丢失了后面的,b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:22:47