Regex MatchCollection得到的结果太多了

olf*_*olf 6 c# regex

使用C#和Regex我有一个奇怪的情况:

string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
MatchCollection collection = Regex.Matches(substr, @"[\d]*");
Run Code Online (Sandbox Code Playgroud)

在我的世界中,上面会给我一个包含6个结果的'集合'的结果.勉强我的集合包含12个结果,每秒结果是{}(空).

我试过把它重写为:

string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
Regex regex = new Regex(@"[\d]*");
MatchCollection collection = regex.Matches(substr);
Run Code Online (Sandbox Code Playgroud)

但它给了我完全相同的结果.我在这里错过了什么?

我正在使用.Net framework 4.5,C#

p.s*_*w.g 7

我相信问题在于你的*量词.它匹配零个或多个字符,这意味着空字符串在技术上是匹配的.您需要使用+量词,如下所示:

string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
MatchCollection collection = Regex.Matches(substr, @"\d+");

// or
Regex regex = new Regex(@"\d+");
MatchCollection collection = regex.Matches(substr);
Run Code Online (Sandbox Code Playgroud)

它将确保仅返回具有一个或多个数字的字符串.

注意,我也放弃了[]你的角色类(),\d因为这里完全没必要.

进一步阅读: