c# - 鉴于c#中的整数开头,从字符串中获取特定数字

标签 c# regex

我正在尝试从字符串中获取匹配值。我必须从给定的字符串中得到两种数字。数字从 5 开始,后接 6 位数字。 ex(5******) 从1开始接5位(1*****)。

我使用以下正则表达式:

(5)[\d]{6} 
(1)[\d]{5}

代码:

  var sampleId5 = Regex.Match(input, @"(5)[\d]{6}");
  if (sampleId5.Success)
  {
      string test = sampleId5.Value;
  }

  var sampleId1 = Regex.Match(input, @"(1)[\d]{5}");
  if (sampleId1.Success)
  {
      string test1 = sampleId1.Value;
  }

这里的问题是,无论我通过 5106542 还是返回两个协调的结果。

我也尝试过这个(^5)[\d]{6}。不管怎样,它不起作用。

我只需要 5******。任何帮助都将得到真正的重视。

最佳答案

问题是你的表达式对匹配的位置没有任何要求,所以他们在中间找到匹配。

如果您需要查找符合条件的独立数字,请在表达式两边添加 \b 以确保两边都没有字母/数字:

var sampleId1 = Regex.Match(input, @"\b(1)[\d]{5}\b");
//                                   ^^          ^^

现在表达式只考虑孤立的数字序列,5106542 不会匹配,因为匹配的序列在中间。

关于c# - 鉴于c#中的整数开头,从字符串中获取特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793982/

相关文章:

php - 为什么我的页面上有 �

c# - 替换文本字符串时出现奇怪的 C# 错误

c# - 从 C# 中的 XmlDocument 中读取特殊字符

c# - 使用 Linq 和 C# 创建列表中项目的所有可能组合

regex - 指定 'inverted' 范围的 sed 行号范围

java - 正则表达式删除括号和空格

regex - 使用 Visual Studio 或 VS Code 删除文本中的空行

java - 正则表达式,试图匹配不超过一个句点?

c# - 使用 .AsParallel().ForAll 或 Parallel.ForEach 性能问题并行化任务

c# - 为什么PowerShell不能 'understand'响应文件的说明?