我有这样的文字:" Showing: 16 of 11543 course results
"
我想要捕捉16和11543.这个值可能不同,但它们的位置总是相同的。我可以分割这个文本,但它看起来并不好看,并且可能在将来导致错误。有什么方法可以使用Regex
来实现这个目标吗?
答案 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);
}