如何用正则表达式提取字符串最后12个非空格字符(C#实现)
如何用正则表达式捕获字符串最后12个非空格字符(C#实现)
需求是提取字符串里最后12个非空格字符,示例如下:
- 输入:
COD83 8365 838 BF,预期输出:D838365838BF - 输入:
COM2893 0409 7642 946,预期输出:304097642946
原本参考相关方案未适配成功,最终自行实现了可用的正则模式,通过C#的Regex.Replace方法完成需求,代码如下:
var pattern = "(.*?)((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?((\\S)\\s*)?$"; var replace = "$3$5$7$9$11$13$15$17$19$21$23$25";
逻辑说明
这个正则从字符串末尾反向匹配,重复12次((\S)\s*)?结构——每个结构负责匹配「一个非空格字符+任意数量可选空格」,再通过替换模式将每个结构里捕获到的非空格字符(对应$3、$5这类分组引用)按顺序拼接,最终得到连续的12个目标字符。
内容的提问来源于stack exchange,提问作者Louis Morandet
相关产品推荐
相关产品推荐

