2014-05-10 39 views
0

我有这样一个简单的,很简单的正则表达式:仅获得整数值

private static string FORMAT_REGEX = @"\{(\d)\}"; 

我有一个像I have {323} dollars一个字符串,我想只有323

当我使用:

 Regex regex = new Regex(FORMAT_REGEX); 
     Match match = regex.Match(format); 

     if (match.Success) 
     { 
      return match.Groups[0].Value; // here comes {323} instead of 323 
     } 

我敢肯定,我的模式是错误的。什么是正确的模式?

回答

2

只有一个小错误。

您需要在\d之后加个+号:\d+捕获所有数字。

而且你需要获得第一组:match.Groups[1].Value

编辑:

这里是一个.NETFiddle

1

Groups[0]将始终返回整个捕获。您需要获得Groups[1]的值。

此外,您还需要捕获多个数字:

@"\{(\d+)\}"; 
// not 
@"\{(\d)\}"; 

对于眼前这个,在那里你可以捕获多组以及整个字符串的例子见MSDN: Match.Groups Property的例子。在那个例子中,他们使用\d{n}来精确捕获n数字。