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

如何排除无空格逗号的正则匹配?实现正确key:value匹配

正则表达式匹配修正方案

输入示例

MyString=[XXXXXX:XX   XX   XX   XX, XXXXX:332.83, XXXXX:XXX-XX-XX XX:XX:XX, XXXX:0.0, XXXX:2, XXXX:0, XXXX:-256, XXXXX:5, XXXX:136935, XXXX:0, XXXX:XX XXX XXX, XXXX:0.5, XXXXX:true, XXXX:0.509375, XXX:0.0, [XXXX:2022-06-14 06:45:00], 2022-09-17,XXXXX:1]

原正则表达式

(?<=(?<!: *)\[).*?(?=,)|(?<=, *(?=[^ \r\n]))(?:.*?(?=,)|[^,\r\n\[\]]+?(?=\])|[^,\r\n]+\](?= *\]))

问题点

原正则会将所有逗号作为分隔符,导致像2022-09-17,XXXXX:1这种逗号后无空格的内容被错误拆分,需要调整为仅以, (逗号加空格)作为分隔符,匹配第一个[和最后一个]之间的key:value项。

修正后的正则表达式

(?<=(?<!: *)\[)(?:(?!, ).)*?(?=, )|(?<=, )(?:(?!, ).)*?(?=(?:, )|(?<!\[)\])

逻辑说明

  • 起始匹配段:(?<=(?<!: *)\[)(?:(?!, ).)*?(?=, )
    定位到第一个非冒号后跟随的[,匹配其后到第一个, 前的所有内容,通过(?!, ).确保不会提前匹配到无空格的逗号。
  • 中间/结尾匹配段:(?<=, )(?:(?!, ).)*?(?=(?:, )|(?<!\[)\])
    定位到, 之后,匹配内容直到下一个, 或者未被嵌套的](排除内部[ ]的干扰),彻底避免拆分无空格逗号的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:15:46