这是我的代码:
// Clear strange characters
String string1 = "d34-&%#*%(#**)2121js3412h";
String string2 = Regex.Match(string1, @"\d+").Value;
Console.WriteLine(string2);
上述代码的输出为:34
预期输出为:3421213412
。
为什么Match
在" - "处停止匹配字符(或任何特殊字符)?
我错过了一些正则表达式规则吗?
答案 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
方法的行为,它会返回找到的第一个匹配。