我现在想进行公式分析:有如下
MYHIGH:(OPEN-REF(HIGH,1))/MA(CLOSE,20),COLORGREEN;
MYLOW:(OPEN-REF(LOW,1))/MA(CLOSE,20),COLORRED;想用正则表达式的方法将公式中的部分内容提取出来,如下:
(OPEN-REF(HIGH,1))/MA(CLOSE,20),
(OPEN-REF(LOW,1))/MA(CLOSE,20),

解决方案 »

  1.   


    俺笨,求简洁的         string cc = "MYHIGH:(OPEN-REF(HIGH,1))/MA(CLOSE,20),COLORGREEN; MYLOW:(OPEN-REF(LOW,1))/MA(CLOSE,20),COLORRED; ";            List<string> dd = new List<string>();
                MatchCollection mc2 = Regex.Matches(cc, @":(.*?)\),");
                foreach (Match m in mc2)
                {
                    if (!dd.Contains(m.Groups[1].Value))
                    {
                        dd.Add(m.Groups[1].Value + ")");
                    }
                }
      

  2.   

    Regex reg=new Regex(@"(?<=MY\w+?:).+?(?=,COLOR)");
      

  3.   

    不是已经告诉你答案了吗?
    晕,难道要这样写才能明白?Regex reg=new Regex(@"(?<=MY\w+?:).+?(?=,COLOR)");
    string str = "MYHIGH:(OPEN-REF(HIGH,1))/MA(CLOSE,20),COLORGREEN; MYLOW:(OPEN-REF(LOW,1))/MA(CLOSE,20),COLORRED; ";
    string result="";
    foreach(Match m in reg.Matchs(str))
    {
    result+=m.Value+"\r\n";
    }
    result输出为:
    (OPEN-REF(HIGH,1))/MA(CLOSE,20)
    (OPEN-REF(LOW,1))/MA(CLOSE,20)
      

  4.   

    (?<=MY\w+?:).+?(?=,COLOR)请高手解释一下这些字母的意思,我真是不明白。
      

  5.   

    就是匹配以“MY(后面还有些其他字母):”开头并且以“,COLOR”结束的字符串的中间部分。
      

  6.   

    foreach(Match m in reg.Matchs(str))
    应为foreach(Match m in reg.Matches(str))