如何判断一个字符串是一个算术表达式;
例如:TpnCount*3,  4/7,  WQ*TpnCount/4;
其中TpnCount,WQ是变量
谢谢

解决方案 »

  1.   

    private bool Check(string s)
    {
    int i = 0;
    System.Text.StringBuilder sb = new StringBuilder();
    sb.Append(@"\w+");
    i+=s.Split('+').Length-1;
    i+=s.Split('-').Length-1;
    i+=s.Split('/').Length-1;
    i+=s.Split('*').Length-1;
    for(int j = 0;j<i;j++)
    {
    sb.Append(@"(\+|\-|\*|\/)\w+");
    }
    sb.Append(@"\w+$");
    System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex(sb.ToString());
    if(Reg.IsMatch(s))
    {
    return true;
    }
    else
    {
    return false;
    }
      

  2.   

    ^((([a-zA-Z0-9]+[+\-*/][a-zA-Z0-9]+)([+\-*/]+[a-zA-Z0-9]+)*)|[a-zA-Z0-9]+)$这个正则表达式可以满足+-*/四则运算的检验。但是,不包含(),正则表达式也排除" "空格的监测,空格你可以对需要检验的字符串作预处理去掉。正则表达式,无法包含()检验的,因为()在运算中有递归的含义,而正则表达式无法进行递归,所以单纯的正则表达式不能检测()。或者是我理解错误?正则表达式也能递归?