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

C#正则匹配分组需求:提取$开头代码与对应数据

C# 提取$开头代码及对应数据的解决方案

你当前的@"\$."只能匹配$加单个字符,无法提取后续关联的数据。要实现需求,需要使用带捕获组的正则表达式,将代码部分和数据部分分开捕获:

正则表达式说明

使用正则:@"\$([^\$])(.*?)(?=\$|$)"

  • \$:匹配$符号(转义是因为$在正则中是字符串结束标记)
  • ([^\$]):捕获组1,匹配$后的任意非$字符(即代码的第二个字符,如0、e等)
  • (.*?):捕获组2,非贪婪匹配任意字符,直到遇到下一个$或字符串结尾
  • (?=\$|$):正向预查,确保匹配终止于下一个$或字符串末尾,避免包含下一个代码的$

C# 代码实现

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "$08$19$eABCDEF$fw123578$iA12356-78$j$k$xabc123";
        string pattern = @"\$([^\$])(.*?)(?=\$|$)";
        
        foreach (Match match in Regex.Matches(input, pattern))
        {
            string code = $"${match.Groups[1].Value}";
            string data = match.Groups[2].Value;
            Console.WriteLine($"Code: {code} - Data: {data}");
        }
    }
}

运行结果

Code: $0 - Data: 8
Code: $1 - Data: 9
Code: $e - Data: ABCDEF
Code: $f - Data: w123578
Code: $i - Data: A12356-78
Code: $j - Data: 
Code: $k - Data: 
Code: $x - Data: abc123

这个方案会遍历所有匹配项,准确提取每个$开头的代码及其对应数据,包括无后续数据的$j、$k这类情况,输出空的Data值,完全符合你的要求。

内容的提问来源于stack exchange,提问作者Nguyễn Việt Tiến

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:20:01