IF REGEXP_INSTR(REPLACE(FORMULA,'' ''),''\*0\.+[0-9]{2,6}|\*\(\-\0\.+[0-9]{2,6}|\*\-0\.+[0-9]{2,6}|/'')>0 
拿到了一段源代码,当中有这么一个语法。请问是什么意思。

解决方案 »

  1.   

    大概的意思:
    1.REPLACE(FORMULA,'1' '2')
    这里应该在两对引号间少了一个逗号,不然语法不对。
    意思是把FORMULA中的1替换成22.再用REGEXP_INSTR
    判断替换后的串是,是否有02,12,22,32...92和06,16,26,36...96之类的组合。
    有的话,REGEXP_INSTR返回值大于0;否则小于0就是正则。
      

  2.   

    regexp_instr(x,pattern
                   [,start
                   [,occurrence
                   [,return_option
                   [,match_option
                   [,subexp_option
                     ]]]]]) 
    REGEXP_INSTR()是一个正则表达式的函数,表示在x中查找pattern所在的位置,后面中括号中是可选查找参数,
    1  start 开始查找的位置 ,默认是1,x 的第一个字符
    2  occurrence 返回第几次出现pattern的位置 ,默认也是1
    后面三个变量不怎么常用,想了解自己在网上找
    replace(x,seach_string,replace_string)用于在x中查找search_string,将其替换成replace_string,返回替代后的新字符串你这代码里面
    REGEXP_INSTR(REPLACE(FORMULA,'' ''),''\*0\.+[0-9]{2,6}|\*\(\-\0\.+[0-9]{2,6}|\*\-0\.+[0-9]{2,6}|/'')>0FORMULA是个字符串变量,''\*0\.+[0-9]{2,6}|\*\(\-\0\.+[0-9]{2,6}|\*\-0\.+[0-9]{2,6}|/''这是个要匹配正则表达式pattern