正则表达式:找到字符串中的所有数字

问题描述:

我想获得一个像这样的字符串的所有数字:正则表达式:找到字符串中的所有数字

"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); 
    } 
} 

你能帮助我获得良好格局吗?

非常感谢

OK,好的代码:

感谢丹尼尔

我使用这个代码:

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

什么是你的代码错误? – qJake

如果不是停留在正则表达式,一个更简单的方法是:

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

或甚至:'someString.Where(Char.IsDigit).ToArray();' – soniiic

+0

@soniiic好的通话 - 我总是忘记这一点。 ReSharper的不断骂我的那一个。 –

你想要做Matches。您只需一组与该模式。

+0

由于丹尼尔 我正在使用此代码: VAR图案= @ “(\ d)”; VAR MS = System.Text.RegularExpressions.Regex.Matches(值,图案); (ms.Count> 0) foreach(var m,ms) { Console.WriteLine(m); } } – Bob