C# 正则表达式.匹配满足特殊字符时的停止匹配

本文关键字:满足 正则表达式 特殊字符 | 更新日期: 2023-09-27 18:35:58

这是我的代码:

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

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

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

C# 正则表达式.匹配满足特殊字符时的停止匹配

您可以随时使用 Regex.Replace

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

如果你想要所有匹配项,请使用Regex.Matches

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

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