有如下字符
sum(abc)*    count(cd)
要得到
sum(abc)
count(cd)我写的正则表达式^(\s*)Sum\s*\(只能取得函数的前面部分,而且一次只能找到一个sum函数,能否一次性取到sum、Count、Avg等聚合函数?说明:函数名有限,就是sql的聚合函数。最好能匹配到右括号。

解决方案 »

  1.   

    SQL不熟,还有什么聚合函数,按下面的格式,添加到第一个()里就可以了
    (sum|count|avg)\s*\([^)]\)
      

  2.   

    取不到。sum(fsd)+ count(aa) +avg(sa)
    取到空
    要求取到
    sum(fsd)
    count(aa)
    avg(sa)
      

  3.   

    (sum|count|avg)\s*\([^)]\)是取到了。但有问题
    括号内只能有一个字符。
      

  4.   

    哦,抱歉,写完没测试,漏了个符号(sum|count|avg)\s*\([^)]*\)
      

  5.   

    正解。前面能否限定是非字母、数字和下划线?
    比如
    mySum(abc)+Sum(ccdd)
    只能取到
    Sum(ccdd)
    而mySum(abc)不符合条件。
    (^(\W*)sum|count|avg)\s*\([^)]*\)我试了,存在一个问题
    mySum(abc)+Sum(ccdd)
    取到
    +Sum(ccdd)
    ,也就是结果出来了,但带多了一个+号。
    如果不行我就将就着用了。
      

  6.   

    那这样,看看还有没有不符合条件的,如果有给出例子\b(sum|count|avg)\s*\([^)]*\)
      

  7.   

    我自己搞定了。((?<=^(\W*))sum ¦(?<=^(\W*))count ¦(?<=^(\W*))avg)\s*\([^)]*\)多谢!千年大侠。结帐。
      

  8.   

    这样简单
    (\bsum|\bcount|\bavg)\s*\([^)]*\)
    测试OK。