第一个公式(ye('1001',0,0)+QC('1002',0,0))+(ljj('1001',0,0)+ye('1002',0,0))-(ljd('1001',0,0)+ye('1002',0,0))第二个公式ye('1001',0,0)+QC('1002',0,0)+ljcash('1001',0,0)-syljj('1002',0,0)
这是一个小的公式 QC('1002',0,-1)
公式前面的字符是可以更换的 括号中的第一个参数的值也是可以变换的他的长度可以使2位 也可以使三位....但是只有数字!后面两个参数只能<=0 不会大于0他的复杂的公式是可以把一个小的公式进行加减 也就是符合小学中的四则运算法! 他可以支持括号把他括起来再和其他的一起计算!如果可以把两个公式和起来写一个正则表达试的话是最好的!
不行的话两个也可以!

解决方案 »

  1.   

    ^([+-]?\(?([+-]?\w+\('\d+',(0|(\-\d+)),(0|(\-\d+))\))+\)?)+$
      

  2.   

    这个也可以。试试。\b((?'b'[^()\+\-*/]*\(.*))+(?'-b'\)[\+\-*/]?)(?(b)(?!))
      

  3.   

    本人是用C#语言写的一个C/S模式的一个接口
      

  4.   

    说真的看到楼主的回复有种想给你一鞋底子的冲动。拉不出屎怪地球没有吸引力。自己不会用或自己没说清楚。反而说别人答案不对。狗屁逻辑。还有,明明是2个人回复的2个正则,你说是一个人写的。眼睛贴墙上了?扣了扔了算了。
    下面是大康那个正则做的单元测试,因为他的是验证用的,我修改一下,来匹配你的所有内容,白痴楼主睁开眼睛看清楚,不会测试就复制下面的代码。string strYour =
    @"第一个公式(ye('1001',0,0)+QC('1002',0,0))+(ljj('1001',0,0)+ye('1002',0,0))-(ljd('1001',0,0)+ye('1002',0,0)) 第二个公式ye('1001',0,0)+QC('1002',0,0)+ljcash('1001',0,0)-syljj('1002',0,0)";
                MatchCollection mc = Regex.Matches(strYour, @"([+-]?\(?([+-]?\w+\('\d+',(0|(\-\d+)),(0|(\-\d+))\))+\)?)+");
                if (mc.Count > 0)
                {
                    foreach (Match m in mc)
                    {
                        MessageBox.Show(m.Value);
                    }
                }结果自己用手指头按F5看去。下面是我写的那个正则的单元测试代码。string strYour =
    @"第一个公式(ye('1001',0,0)+QC('1002',0,0))+(ljj('1001',0,0)+ye('1002',0,0))-(ljd('1001',0,0)+ye('1002',0,0)) 第二个公式ye('1001',0,0)+QC('1002',0,0)+ljcash('1001',0,0)-syljj('1002',0,0)";
                MatchCollection mc = Regex.Matches(strYour, @"\b((?'b'[^()\+\-*/]*\(.*))+(?'-b'\)[\+\-*/]?)(?(b)(?!))");
                if (mc.Count > 0)
                {
                    foreach (Match m in mc)
                    {
                        MessageBox.Show(m.Value);
                    }
                }
    绝对不再回复楼猪的帖子。最好你也别再问了。以后回答你问题的都是白痴。
      

  5.   

     我就是说你给我的不行怎么啦!而且你给我的这个正则表达式测试我随便写的公式运行结果都是true  不管是正确的还是错误的!怎么啦!不行就是不行! 
      

  6.   

    以后回答你问题的都是白痴。
    LS太嚣张了,,,,,,,看来沙发太重要了。
    呵呵,大家都别介意。
    要骂的话我XXCSDN,要不是耐心好,电脑早就魂飞魄散了。。
    LZ试试看:QC\('([+-]?\d+)',(0|-\d+),(0|-\d+)
    HTML:QC('1002',0,-1) 
    Regex:QC\('([+-]?\d+)',(0|-\d+),(0|-\d+)
    Results:您的表达式获取到1项结果,分组个数为4.详细如下:
    这是第1个组,组名为[0],所匹配到的明细如下:
    这是第1条记录:所捕获的字符串为:QC('1002',0,-1这是第2个组,组名为[1],所匹配到的明细如下:
    这是第1条记录:所捕获的字符串为:1002这是第3个组,组名为[2],所匹配到的明细如下:
    这是第1条记录:所捕获的字符串为:0这是第4个组,组名为[3],所匹配到的明细如下:
    这是第1条记录:所捕获的字符串为:-1
      

  7.   

    字符串:
    第一个公式(ye('1001',0,0)+QC('1002',0,0))+(ljj('1001',0,0)+ye('1002',0,0))-(ljd('1001',0,0)+ye('1002',0,0)) 正则:
    QC\('([+-]?\d+)',(0|-\d+),(0|-\d+)匹配结果:
    QC('1002',0,0楼主要的是这个结果?这个对了?瞎子楼猪还真是瞎子。
      

  8.   

    另外,你要明白一点。
    而且你给我的这个正则表达式测试我随便写的公式运行结果都是true  不管是正确的还是错误的!
    这句话本来就是错的。
    你之前说你的正则如何用了?
    如果从一个大文本中,选择出符合条件的公式。和你要求输入的字符串检验是否符合标准。这是不同的需求。你提问都不会提问还指望对答案做论断说对错?
      

  9.   

    第一个:\(\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)[\+\-\*\\]\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)\)[\+\-\*\\]\(\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)[\+\-\*\\]\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)\)[\+\-\*\\]\(\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)[\+\-\*\\]\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)\)第二个:\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)[\+\-\*\\]\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)[\+\-\*\\]\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)[\+\-\*\\]\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)
      

  10.   

    ^\s*[-+]?(((\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)))+(\s*$|\s*([-+*/]{1}?|[<>!=]+)\s*))*(((?<o>\()\s*[-+]?(((\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)))+\s*([-+*/]{1}?|[<>!=]+)\s*)*)+((\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)))+(\s*(?<-o>\))(\s*([-+*/]{1}?|[<>!=]+)\s*((\w*\('\d*',((-\d+)|(0+)),((-\d+)|(0+))\)))+)*)+(\s*$|\s*([-+*/]{1}?|[<>!=]+)\s*))*(?(o)(?!))(?<=[0-9)]\s*)\s*$ 前面符号不能匹配,可先用"\)\w*\("去判断