如何用正则提取[]内以`, `分隔的各组数据(保留内部逗号)
解决方法
第一步:提取最外层方括号内的完整内容
用以下正则匹配,直接取捕获组1的结果,就能去掉首尾的[和],同时完整保留内部所有内容(包括嵌套方括号、空格和数据内的逗号):
MyString=\[(.*)\]
第二步:按指定规则拆分分组
拿到第一步的内容后,用以下正则作为分隔符进行拆分,即可避开嵌套方括号内的逗号,只识别真正的分组分隔符(逗号加空格):
, (?=(?:[^[\]]|\[[^\]]*\])*$)
正则逻辑说明
- 核心匹配
:(逗号加空格)作为分组分隔符 - 正向预查规则确保:匹配到的
,后面的内容中所有方括号都是成对闭合的,不会误拆分嵌套方括号内部的逗号,也不会破坏数据内自带的逗号结构。
实际效果示例
以你提供的原始字符串为例:
- 第一步捕获的内容就是方括号包裹的全部原始数据,无任何内容丢失
- 用第二步的正则拆分后,会得到你期望的分组列表——内部带逗号的
2022-09-17,XXXXX:1、带嵌套括号的XXXX:[2022-06-14 06:45:00]都会完整保留为单独的组。
内容的提问来源于stack exchange,提问作者Nitneuq
相关产品推荐
相关产品推荐

