返回正则表达式中的所有数字

时间:2016-12-22 20:45:39

标签: c# regex

我试图找到已放入应用程序的所有硬编码ID。我创建了一个控制台应用,我试图找到所有ID。我遇到了几个问题。

我有很多不同的格式,我试图找到,但我想我现在一次做1个:

例如,我有以下内容:

if ((Id != "28" && Id != "29" && Id != "9" && Id != "123" && Id != "904"))

这只会返回" 9"

Match match = Regex.Match(line, "Id != \"[0-9]\"",  RegexOptions.IgnoreCase);

if (match.Success) {
    string key = match.Groups[0].Value;
    Console.WriteLine(key);
}

我想知道如何返回上面示例中找到的每个数字。我想回复:

  • 28
  • 29
  • 9
  • 123
  • 904

2 个答案:

答案 0 :(得分:2)

您需要匹配一个或多个数字,并拨打Matches以获取所有匹配,或致电下一个匹配以继续搜索:

Match match = Regex.Match(line, "Id != \"([0-9]+)\"",  RegexOptions.IgnoreCase);

while (match.Success) {
    string key = match.Groups[1].Value;
    Console.WriteLine(key);
    match = match.NextMatch();
}

您的代码更改如下:

  • [0-9]
  • 替换([0-9]+)
  • 切换为使用Groups[1]中的Groups[0]忽略不相关的部分
  • 添加了一个循环并调用NextMatch()

Demo.

答案 1 :(得分:1)

你应该致电.Matches

MatchCollection matches = Regex.Matches(line, "Id != \"([0-9]+)\"",  RegexOptions.IgnoreCase);

foreach(Match match in matches)
    string key = match.Groups[1].Value;
    Console.WriteLine(key);
}