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

如何在C#中使用正则表达式提取含空格的指定字符串?

正则匹配失败问题解决

原正则的问题分析

  • 正则末尾的$强制要求匹配内容处于行尾,但目标字符串22334 E112233后还有换行和其他文本,不符合行尾条件,导致匹配失败。
  • 正则最后的|会匹配空字符串,Match方法会优先返回空匹配,直接得到空结果。
  • 未锚定目标内容的前缀REG #,无法精准定位需要提取的ID区域,容易误匹配其他无关数字。

正确实现方法

方案一:精准锚定前缀提取

通过REG #定位目标ID的起始位置,用捕获组提取需要的内容:

var myString= "my id is REG #22334 E112233
my name is xyz
my city is xyz";
// 匹配REG #后接的5位数字 + 空格 + E开头的6位数字
var regex = new Regex(@"REG #(\d{5} E\d{6})");
var match = regex.Match(myString);
var id = match.Success ? match.Groups[1].Value : string.Empty;

// 输出结果:22334 E112233

方案二:限制数字范围(匹配1-3开头的5位数字)

如果需要确保ID的数字部分以1-3开头,调整正则为:

var regex = new Regex(@"REG #([1-3]\d{4} E\d{6})");

关键调整说明

  • 移除原正则的$和多余的|,消除匹配限制和空匹配干扰。
  • 用REG #作为前缀锚定,确保只提取目标ID内容,避免误匹配。
  • 使用捕获组(括号包裹的区域)直接获取需要的结果,通过Groups[1]读取捕获值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:05:21