如何使用Regex捕获此值?

时间:2014-07-04 11:28:33

标签: c# .net

我有这样的文字:" Showing: 16 of 11543 course results"

我想要捕捉16和11543.这个值可能不同,但它们的位置总是相同的。我可以分割这个文本,但它看起来并不好看,并且可能在将来导致错误。有什么方法可以使用Regex来实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

这是正则表达式:

Showing: (\d{1,10}) of (\d{1,10}) course results

捕获组是您的第一个号码,捕获组2是您的第二个号码。捕获组由括号()定义,\d捕获数字,花括号中的数字定义要捕获的数字的可能长度。

因此,在这种情况下,它将检测至少包含1和最多10位数的数字。

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string yourInputString = "Showing: 16 of 11543 course results";
        Match match = Regex.Match(yourInputString, @"Showing: (\d{1,10}) of (\d{1,10}) course results", RegexOptions.IgnoreCase);
        if (match.Success)
        {
            string firstNum = match.Groups[1].Value; // 16
            string secondNum = match.Groups[2].Value; // 11543
        }
    }
}

答案 1 :(得分:-1)

有很多方法可以解决这个问题......另一个找到所有数字组的方法:

string text = "Showing: 16 of 11543 course results";
Regex re = new Regex("(\\d+)");
MatchCollection mc = re.Matches(text);
foreach(var match in mc) 
{
  Console.WriteLine(match);
}