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

时间:2015-01-03 15:07:14

标签: c# regex match

这是我的代码:

// Clear strange characters
String string1 = "d34-&%#*%(#**)2121js3412h";
String string2 = Regex.Match(string1, @"\d+").Value;
Console.WriteLine(string2);

上述代码的输出为:34 预期输出为:3421213412

为什么Match在" - "处停止匹配字符(或任何特殊字符)?
我错过了一些正则表达式规则吗?

2 个答案:

答案 0 :(得分:2)

您始终可以使用Regex.Replace

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

答案 1 :(得分:0)

如果您想要所有比赛,请使用Regex.Matches

var matches = Regex.Matches(string1, @"\d+").Cast<Match>().Select(x => x.Value);
string string2 = string.Concat(matches);

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