从包含括号{in C#的字符串中仅获取整数值

时间:2014-05-10 12:21:18

标签: c# regex

我有一个简单,非常简单的正则表达式模式,如:

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 个答案:

答案 0 :(得分:2)

只是一个小错误。

\d之后需要一个+号:\d+来捕获所有数字。

您需要获得第一组:match.Groups[1].Value

编辑:

这是.NETFiddle

答案 1 :(得分:1)

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

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

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

请参阅MSDN: Match.Groups Property上的示例,了解此示例,您可以捕获多个组以及整个字符串。在该示例中,他们使用\d{n}来准确捕获n个数字。