正则表达式匹配:忽略最多两层括号内的逗号分割元素
支持最多两层括号的逗号分隔元素匹配正则
升级后的正则表达式
/(?:[^,\s]+(?:\s+\([^)]*(?:\([^)]*\))?[^)]*\))?)|(?:\([^)]*(?:\([^)]*\))?[^)]*\))/g
正则说明
这个正则通过两个分支覆盖所有目标场景:
- 第一分支:匹配以非逗号、非空白字符开头的元素,允许后续带空格包裹的最多两层括号内容:
[^,\s]+:匹配元素起始的普通字符(如a、c)(?:\s+\([^)]*(?:\([^)]*\))?[^)]*\))?:可选的括号部分,其中(?:\([^)]*\))?允许括号内部嵌套一层括号
- 第二分支:匹配直接以括号开头的元素,同样支持内部嵌套一层括号,比如
(b, b)这种纯括号元素
测试验证
针对目标字符串 a,(b, b),c (aaa, (bbb, cccc, ddd)),d,匹配结果为:
a(b, b)c (aaa, (bbb, cccc, ddd))d
完全符合预期的分割需求。
内容的提问来源于stack exchange,提问作者Temani Afif
相关产品推荐
相关产品推荐

