C# 正则表达式:查找字符串中的所有数字

C# 正则表达式:查找字符串中的所有数字,c#,regex,C#,Regex,我想得到如下字符串的所有数字: "0" => Groups = "0" "1 2-3" => Groups = "1", "2", "3" "45i6" => Groups = "4", "5", "6" 我正在使用以下代码: var pattern = @"(\d)"; var m = System.Text.RegularExpressions.Regex.Match(value, pattern); if(m.Success) { foreach (var gp

我想得到如下字符串的所有数字:

"0" => Groups = "0"
"1 2-3" => Groups = "1", "2", "3"
"45i6" => Groups = "4", "5", "6"
我正在使用以下代码:

var pattern = @"(\d)";
var m = System.Text.RegularExpressions.Regex.Match(value, pattern);
if(m.Success)
{
    foreach (var gp in m.Groups)
    {
        Console.WriteLine(gp);
    }
}
var pattern = @"(\d)";
var ms = System.Text.RegularExpressions.Regex.Matches(value, pattern);
if(ms.Count > 0)
{
    foreach (var m in ms)
    {
        Console.WriteLine(m);
    }
}
你能帮我弄到好的图案吗

非常感谢

好的,好的代码是:

谢谢丹尼尔

我正在使用以下代码:

var pattern = @"(\d)";
var m = System.Text.RegularExpressions.Regex.Match(value, pattern);
if(m.Success)
{
    foreach (var gp in m.Groups)
    {
        Console.WriteLine(gp);
    }
}
var pattern = @"(\d)";
var ms = System.Text.RegularExpressions.Regex.Matches(value, pattern);
if(ms.Count > 0)
{
    foreach (var m in ms)
    {
        Console.WriteLine(m);
    }
}

您想进行
匹配
。您将只有一个具有该模式的组。

您要进行
匹配。您将只有一个具有该模式的组。

如果您不拘泥于正则表达式,则更简单的方法是:

var digits = someString.Where(c => char.IsDigit(c)).ToArray();

如果您不拘泥于正则表达式,则更简单的方法是:

var digits = someString.Where(c => char.IsDigit(c)).ToArray();

你的代码有什么问题?你的代码有什么问题?谢谢Daniel,我正在使用这个代码:var pattern=@“(\d)”;var ms=System.Text.RegularExpressions.Regex.Matches(值、模式);如果(ms.Count>0){foreach(ms中的var m){Console.WriteLine(m);}}}感谢Daniel,我正在使用以下代码:var pattern=@“(\d)”;var ms=System.Text.RegularExpressions.Regex.Matches(值、模式);如果(ms.Count>0){foreach(ms中的var m){Console.WriteLine(m);}}}甚至:
someString.Where(Char.IsDigit.ToArray()@SONIIC好电话-我总是忘了这件事。ReSharper经常因为这个而对我大喊大叫。甚至:
someString.Where(Char.IsDigit.ToArray()@SONIIC好电话-我总是忘了这件事。ReSharper经常因为那件事对我大喊大叫。