C#Regex.Match遇到特殊字符时停止匹配

C#Regex.Match遇到特殊字符时停止匹配,c#,regex,match,C#,Regex,Match,这是我的代码: // Clear strange characters String string1 = "d34-&%#*%(#**)2121js3412h"; String string2 = Regex.Match(string1, @"\d+").Value; Console.WriteLine(string2); 上述代码的输出为:34 预期输出为:34213412 为什么匹配在“-”字符(或任何特殊字符)处停止匹配 我是否遗漏了一些正则表达式规则?如果您想要所有匹配项,请使

这是我的代码:

// Clear strange characters
String string1 = "d34-&%#*%(#**)2121js3412h";
String string2 = Regex.Match(string1, @"\d+").Value;
Console.WriteLine(string2);
上述代码的输出为:
34

预期输出为:
34213412

为什么
匹配
在“-”字符(或任何特殊字符)处停止匹配
我是否遗漏了一些正则表达式规则?

如果您想要所有匹配项,请使用:

var matches=Regex.matches(string1,@“\d+”).Cast()。选择(x=>x.Value);
string string2=string.Concat(匹配项);

这与特殊角色无关。这是
Match
方法的行为,它返回找到的第一个匹配项。

您始终可以使用
Regex.Replace

string string2 = Regex.Replace(string1, @"[^0-9]", "");
string string2 = Regex.Replace(string1, @"[^0-9]", "");