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

如何用C#正则提取字符串中第一个与第二个逗号间的内容?

问题:提取字符串中第一个和第二个逗号之间的内容

我有如下字符串:

"8/4/2022 9:47:59 AM,Gerald Digat Denys,8/4/2022 9:47:59 AM,Updated,207190091504228,CD_CODE_GD,CD_CODE_GD,CD_DESC_GDxxy,"

想要提取第一个和第二个逗号(,)之间的名称,即:Gerald Digat Denys。
我尝试了以下写法:

Regex.Replace(str, @"[^,a-z, A-Z,]+", String.Empty).Replace(",", "").Trim().ToString();

但得到了错误的结果:

"AMGerald Digat Denys Ugas  AMUpdatedCDCODEGDCDCODEGDCDDESCGDxxy"

请问我的正则写法存在什么问题?或者该如何正确实现需求?


原正则的问题

你的正则逻辑完全偏离了需求:

  • 正则[^,a-z, A-Z,]+的作用是匹配所有不是小写字母、大写字母、空格、逗号的字符,然后替换为空,接着你又把所有逗号删掉,相当于把字符串里所有字母和空格都拼在了一起,自然得不到目标内容。
  • 另外正则里重复写了多个逗号[^,a-z, A-Z,]+属于冗余写法,字符集里的重复字符没有实际意义。

正确实现方法

方法1:用正则精准匹配目标内容

直接写正则定位第一个逗号后、第二个逗号前的内容:

string str = "\"8/4/2022 9:47:59 AM,Gerald Digat Denys,8/4/2022 9:47:59 AM,Updated,207190091504228,CD_CODE_GD,CD_CODE_GD,CD_DESC_GDxxy,\"";
Match match = Regex.Match(str, @",([^,]+),");
if (match.Success)
{
    string result = match.Groups[1].Value;
    // 结果为 Gerald Digat Denys
}

正则说明:

  • ,:匹配第一个逗号
  • ([^,]+):捕获组,匹配任意数量的非逗号字符(即两个逗号之间的内容)
  • ,:匹配第二个逗号

方法2:字符串分割(更简单直观)

如果字符串格式稳定,直接用Split分割后取对应索引的元素:

string str = "\"8/4/2022 9:47:59 AM,Gerald Digat Denys,8/4/2022 9:47:59 AM,Updated,207190091504228,CD_CODE_GD,CD_CODE_GD,CD_DESC_GDxxy,\"";
// 先移除首尾引号(如果需要)
str = str.Trim('"');
string[] parts = str.Split(',');
if (parts.Length >= 2)
{
    string result = parts[1];
    // 结果为 Gerald Digat Denys
}

这种方法无需正则,适合格式固定的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:50:22