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

C# Regex实现:统计指定前缀开头且末尾最多2个字符的单词数量

用C# Regex实现特定前缀单词的统计需求

核心正则规则解析

要匹配以指定前缀开头,且前缀后最多跟2个任意字符的完整单词,关键是用{0,2}限定符控制后缀长度,搭配单词边界确保匹配独立单词:

基础正则模板

假设目标前缀为piec,对应的正则模式为:

\bpiec.{0,2}\b
  • \b:单词边界,避免匹配长单词中的片段(比如不会从piecxyz里截出piecxy)
  • piec:指定的前缀字符串
  • .{0,2}:匹配任意非换行字符0到2次
  • 末尾\b:确保匹配的是完整单词的结尾

限定特定后缀字符(可选)

如果需要限制末尾只能是特定字符(比如仅允许字母类的复数后缀),把.换成字符集即可,例如只匹配小写字母后缀:

\bpiec[a-z]{0,2}\b

C# 代码实现示例

using System;
using System.Text.RegularExpressions;

class WordCounter
{
    static void Main()
    {
        string inputText = "I had a piece of cake. There are many pieces left. piecess should not be counted.";
        string targetPrefix = "piec";
        
        // 构建正则模式,自动转义前缀中的正则特殊字符(如.、*等)
        string regexPattern = $@"\b{Regex.Escape(targetPrefix)}.{{0,2}}\b";
        
        // 执行匹配,可选忽略大小写
        MatchCollection matches = Regex.Matches(inputText, regexPattern, RegexOptions.IgnoreCase);
        
        Console.WriteLine($"匹配到的单词总数:{matches.Count}"); // 输出结果为2
        
        // 遍历打印所有匹配项
        foreach (Match match in matches)
        {
            Console.WriteLine($"匹配单词:{match.Value}");
        }
    }
}

关键细节提示

  • Regex.Escape(targetPrefix):必须处理前缀中的正则特殊字符,避免语法错误
  • RegexOptions.IgnoreCase:按需开启,可匹配大小写不同的单词(如Piece、PIECES)
  • 若要排除标点干扰(比如单词末尾的.),可将模式调整为\b{prefix}.{0,2}(?=\W|$),用正向预查替代末尾的\b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:45:34