上次处理了一个excel的计算公式的正则
http://topic.csdn.net/u/20101117/14/5149fff6-9fee-43cf-a551-85c07e818582.html现在我想把如下公式正则匹配出=T8-AA9-(AC2-1)-21:引用其他单元格的如T8就分解出2个数组 T   8
2:常量就不用匹配了,如后面的-1-2
3:也就是说前面有字母的字符串如T8,AA9,AC2就
分解出 
T   8
AA  9
AC  2
我想字符串放在一个List<String>里面
然后892放在一个List<String>里面
主要是正则表达式,其他的我可以做,呵呵~对正则不是很熟悉

解决方案 »

  1.   


    void Main()
    {
    List<string>list1=new  List<string>(); //存放字母
    List<string>list2=new  List<string>(); //存放数字
    string test = "=T8-AA9-AC2-1-2";
    Regex reg = new Regex(@"\b([A-Z]{1,3})(\d+)");
    MatchCollection mc = reg.Matches(test);
    foreach (Match m in mc)
    {
    list1.Add(m.Groups[1].Value);
    list2.Add(m.Groups[2].Value);
    }
       
        list1.ForEach(l=>Console.WriteLine(l));
    list2.ForEach(l=>Console.WriteLine(l));

    }/*
    T
    AA
    AC
    8
    9
    2*/
      

  2.   

    (([a-zA-Z]+)(\d+)-){2}\(([a-zA-Z]+)(\d+)-\d+\)-\d+
      

  3.   


    void Main()
    {
    List<string>list1=new  List<string>(); //存放字母
    List<string>list2=new  List<string>(); //存放数字
    string test = "=T8-AA9-(AC2-1)-2";
    Regex reg = new Regex(@"\b([A-Z]{1,3})(\d+)");
    MatchCollection mc = reg.Matches(test);
    foreach (Match m in mc)
    {
    list1.Add(m.Groups[1].Value);
    list2.Add(m.Groups[2].Value);
    }
       Console.WriteLine("list1内容:");
        list1.ForEach(l=>Console.WriteLine(l));
    Console.WriteLine("list2内容:");
    list2.ForEach(l=>Console.WriteLine(l));

    }/*
    T
    AA
    AC
    8
    9
    2*/