求可提取字符串(n-3)、(n-2)位置字符的C# Regex方案
C# 基于Regex的指定位置字符提取实现
实现目标:在C#开发环境下通过正则表达式提取目标字符串倒数区段的指定位置字符,需提取的位置对应字符串总长度n(从1开始计数)的n-3、n-2位连续2个字符;配套验证规则为输入测试字符串
"QWEREIA89RR"时,提取结果为"89"。
- 正则规则设计:
- 利用正则末尾锚定符
$直接定位字符串结束位置,无需提前计算字符串长度即可锁定目标位置 - 最终匹配表达式为
..(?=..$):..匹配任意2个连续字符,正向预查规则(?=..$)约束被匹配的2个字符后方必须紧跟2个任意字符后抵达字符串末尾,刚好对应需求要求的位置
- 利用正则末尾锚定符
可运行实现代码
using System; using System.Text.RegularExpressions; public class CharsExtractDemo { // 固定匹配规则:定位倒数第3、4位的两个连续字符,对应1起始计数的n-3、n-2位置 private const string MatchPattern = @"..(?=..$)"; public static string GetTargetChars(string sourceStr) { // 边界校验:长度不足4的字符串无匹配目标,直接返回空值 if (string.IsNullOrEmpty(sourceStr) || sourceStr.Length < 4) { return string.Empty; } Match result = Regex.Match(sourceStr, MatchPattern); return result.Success ? result.Value : string.Empty; } public static void Main() { // 执行配套测试 string testInput = "QWEREIA89RR"; string extractResult = GetTargetChars(testInput); // 控制台输出:89,与预期结果一致 Console.WriteLine($"提取结果:{extractResult}"); } }
- 实操注意事项:
- 实现逻辑无第三方依赖,仅需引用.NET内置的
System.Text.RegularExpressions命名空间即可运行 - 已覆盖边界场景:当输入字符串长度小于4时,不会触发正则匹配,直接返回空字符串避免异常
- 若需处理带换行符的长文本,调用
Regex.Match时可追加RegexOptions.Singleline参数,确保$锚点正确匹配整个文本的末尾位置
- 实现逻辑无第三方依赖,仅需引用.NET内置的
内容的提问来源于stack exchange,提问作者Rahul Sundar
相关产品推荐
相关产品推荐

