如何使用Regex.Split分割CSV时跳过指定关键词后的逗号
CSV指定规则分割正则解决方案
核心正则表达式
你需要的匹配规则可以通过.NET正则引擎支持的可变长度负向后行断言实现,对应正则为:
,(?<!JSON=.*)
规则说明
,匹配目标分割符逗号(?<!JSON=.*)为负向后行断言:要求当前逗号的前置字符中,从未出现过JSON=子串。只要之前出现过JSON=,后续所有逗号都不会被该正则匹配,自然不会触发分割
C# 实现示例(Regex.Split)
using System; using System.Text.RegularExpressions; class SplitDemo { static void Main() { string input = "1,2,3,Test Message,JSON={ \"book\": { \"title\": \"Hello, there, world\" } }"; // 匹配符合分割条件的逗号 string splitPattern = @",(?<!JSON=.*)"; string[] splitResult = Regex.Split(input, splitPattern); // 输出结果 foreach (var item in splitResult) { Console.WriteLine(item); } } }
运行输出
和预期结果完全一致:
1 2 3 Test Message JSON={ "book": { "title": "Hello, there, world" } }
适配说明
如果需要替换触发停止分割的关键词,只需要把正则中的JSON=替换为你指定的关键词即可。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

