用C#解析字符串<%dt2[9,8]%>(说明:这个字符串中的所有数字不一定是一位数,有可能或者一定有两位数或者三位数,在这只举个例子,比如<%dt11[12,7]%>)我现在要分别获取dt2,9,8这几个字符串,用c#正则表达式怎么做啊?(说明:这三个字符要单独提出来分别放到变量中去)

解决方案 »

  1.   

    public static void Test()
    {
        string s = "aaaaaaaafdfd<%dt2[9,8]%>feafewfasdfdsa<%dt11[12,7]%>fdsafdaf";
        foreach (Match m in Regex.Matches(s, @"<%(\w+)\[(\d+),(\d+)\]%>"))
        {
            Console.WriteLine(m.Groups[1].Value);
            Console.WriteLine(m.Groups[2].Value);
            Console.WriteLine(m.Groups[3].Value);
            Console.WriteLine("-----------神奇的分割线-----------");
        }
    }
    输出dt2
    9
    8
    -----------神奇的分割线-----------
    dt11
    12
    7
    -----------神奇的分割线-----------
      

  2.   


    void Main()
    {
    foreach(Match m in Regex.Matches("aaaaaaaafdfd<%dt2[9,8]%>feafewfasdfdsa<%dt11[12,7]%>fdsafdaf",@"(?i)(?<=<%).*?([^\[])(?=\[)|(?<=\[)\d?([^,])(?=,)|(?<=,)\d?([^\]])(?=\])"))
    {
    Console.WriteLine(m.Value);
    }
    }/*
    dt2
    9
    8
    dt11
    12
    7
    */
      

  3.   

                string str = "<%dt2222222[222222222222229,2222222222228]%>";
                foreach (Match r in Regex.Matches(str, @"<%(\w+\d+)\[(\d+),(\d+)\]%>"))
                {
                    Console.WriteLine(r.Groups[1].Value);
                    Console.WriteLine(r.Groups[2].Value);
                    Console.WriteLine(r.Groups[3].Value);
                }