为什么这样做(返回25):
var match = Regex.Match("Age: 25 yrs.", @"(\d+)");
Console.WriteLine(match.Groups[1].Value);
但这并不是(返回一个空白组):
var match = Regex.Match("Age: 25 yrs.", @"(\d*)");
Console.WriteLine(match.Groups[1].Value);
关于.NET如何处理我错过的正则表达式,必须有一些基础。
答案 0 :(得分:2)
点\d*
也匹配空字符串。 Match
只找到第一个匹配项。而且正如我们所知,您可以在任何字符串前面填充任意数量的空字符串。所以它返回第一个空的。
因此,如果您这样做,它会匹配总共13个字符串,25
就是其中之一。
var matches = Regex.Matches("Age: 25 yrs.", @"(\d*)");
foreach (var match in matches.Cast<Match>())
{
Console.WriteLine(match.Index + ":" + match.Value);
}
答案 1 :(得分:0)
(\d*)
将尝试取0-infinite,因此结果将是无限的,这是无效的。
您打算使用(\d)+
,这将占用1位或更多位数。