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

C# 使用Regex按分隔符拆分行忽略引号内分隔符及未闭合引号处理问题

正则调整方案

原正则的核心问题是强依赖双引号成对匹配的逻辑,遇到未闭合的单个双引号时,断言匹配失败,导致返回空字段。调整后的正则如下:
(?<=^|,)(?:"[^"]*(?:"|$)|[^,])*?(?=,|$)

正则逻辑说明

  • 从分隔符/行首位置开始匹配
  • 优先匹配被双引号包裹的内容:如果找到闭合双引号就匹配到闭合引号为止,如果没有找到闭合双引号,就匹配到下一个分隔符/行尾为止
  • 没有引号的场景直接匹配到下一个分隔符/行尾
  • 全程不会强制要求双引号必须成对,兼容未闭合引号的异常输入

测试效果验证

常规无引号输入

输入内容:column1, column2, column3
拆分结果:

column1
 column2
 column3

引号内含分隔符输入

输入内容:column1, "column2," column3
拆分结果:

column1
 "column2," column3

未闭合引号输入

输入内容:column1, column2", column3
拆分结果:

column1
 column2"
 column3

C# 调用代码示例

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "column1, column2\", column3";
        Regex splitRegex = new Regex(@"(?<=^|,)(?:""[^""]*(?:""|$)|[^,])*?(?=,|$)");
        var matches = splitRegex.Matches(input);
        foreach (Match match in matches)
        {
            // 过滤空值可根据业务需求决定是否保留
            if (!string.IsNullOrWhiteSpace(match.Value))
            {
                Console.WriteLine(match.Value);
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:06:03