如何解析字母数字字符串以获取数值

时间:2014-06-10 11:24:39

标签: c# regex

如果我有像

这样的字符串
[1] Bryan Mar

John Doe [2]

Mary [3] Cole

如果它在每个字符串中随机分布,我将如何得到[]内的值。

我在考虑使用正则表达式,但我不知道如何为此示例创建模式。

感谢您的帮助。

更新 []内的数字是32位整数

1 个答案:

答案 0 :(得分:1)

你是正确的,使用正则表达式将是解决它的一种方法。试试这个:

class Program
{
    static void Main(string[] args)
    {
        var strings = new string[] { "[1] Bryan Mar", "John Doe [2]", "Mary [3] Cole" };

        var re = new Regex(@"^.*\[(\d)\].*$");

        foreach (var s in strings)
        {
            var m = re.Match(s);
            if (m.Success)
            {
                Console.WriteLine(m.Groups[1].Value);
            }
        }

        Console.ReadLine();
    }
}

表达式匹配零个或多个字符后跟一个左方括号,后跟一个数字(\d)和一个右方括号,然后是任意数量的字符。括号括号将捕获的数字添加到正则表达式,稍后可以访问(m.Groups[1])。如果您想知道为什么该组具有索引1而不是索引0,那是因为整个字符串始终是组0

如果您希望它能够匹配多个数字,只需将表达式更改为:

var re = new Regex(@"^.*\[(\d+)\].*$");