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
相关产品推荐
相关产品推荐

