REGEXP_SUBSTR('34,56,-23','[^,]*',1,2,'i')
应该和
REGEXP_SUBSTR(',56,-23','[^,]*',1,1,'i')
的效果是一样的
同样
REGEXP_SUBSTR('34,56,-23','[^,]+',1,2,'i')
应该和
REGEXP_SUBSTR(',56,-23','[^,]+',1,1,'i')
的效果是一样的
应该和
REGEXP_SUBSTR(',56,-23','[^,]*',1,1,'i')
的效果是一样的
同样
REGEXP_SUBSTR('34,56,-23','[^,]+',1,2,'i')
应该和
REGEXP_SUBSTR(',56,-23','[^,]+',1,1,'i')
的效果是一样的
执行顺序
1、找到第一个满足表达式的字符串为34
2、把第一个字符串从原始字符串中去除,即‘,56,-23’
3、从字符串‘,56,-23’ 找到的下一个满足'[^,]*'的字符串为空,返回结果
'*' 匹配前面的子表达式零次或多次,0次的情况下,‘,’也会占一个位置,但是返回的值是null。
也就是说当你用'*'的时候,‘,’也会占一个位置。
而(+)则只将其剔除掉了