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

C#正则表达式匹配重复模式:精准匹配特定格式文本

C#正则表达式实现指定模式的重复匹配

当然可以,正则本身就支持通过重复量词来指定模式的重复次数,不用额外的迭代器,用{n}语法就能精准控制某段模式重复恰好7次。

最终正则表达式

^X:\s*([+-]?\d+)(?:\s+([+-]?\d+)){6}\s*mG$

各部分解释

  • ^X::严格匹配字符串开头的X:
  • \s*:匹配第一个整数前的任意数量空格(包括没有空格的情况)
  • ([+-]?\d+):捕获一个带可选正负号的整数——[+-]?表示正负号可有可无,\d+匹配一个或多个数字
  • (?:\s+([+-]?\d+)){6}:这是一个非捕获组((?:...)),里面是“至少一个空格+带正负号的整数”的组合,指定重复6次;加上前面的1个整数,刚好凑够7个
  • \s*mG$:匹配结尾前的任意数量空格,然后是mG,并确保这是字符串的结尾(避免后面还有多余内容)

C#代码示例

using System.Text.RegularExpressions;

// 测试输入
string testInput = "X:  -100 +200 300 -40 +5 6 -7 mG";
string regexPattern = @"^X:\s*([+-]?\d+)(?:\s+([+-]?\d+)){6}\s*mG$";

// 验证格式是否匹配
bool isValid = Regex.IsMatch(testInput, regexPattern);
Console.WriteLine($"格式是否有效:{isValid}"); // 输出 True

// 提取所有7个整数
Match matchResult = Regex.Match(testInput, regexPattern);
if (matchResult.Success)
{
    Console.WriteLine("提取到的7个整数:");
    for (int i = 1; i <= 7; i++)
    {
        Console.WriteLine($"第{i}个:{matchResult.Groups[i].Value}");
    }
}

额外说明

  • 如果只是验证格式、不需要提取整数,可以把所有捕获组改成非捕获组,简化正则:
    ^X:\s*(?:[+-]?\d+)(?:\s+[+-]?\d+){6}\s*mG$
    
  • 如果只想匹配普通空格(不包含制表符等其他空白),把所有\s换成空格字符 即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:52:08