我在Oracle 11.2.0.3.0 / Toad for Oracle 11.6.1.6中使用以下查询:
select regexp_replace('000010PARA197427'
,'([0-9]*)([A-Z]*)([0-9]*)'
,'\3-\2-\1') from dual
而不是让我的预期,197427-PARA-000010
。197427-PARA-000010--
结果我得到了。
如果我将查询更改为:
select regexp_replace('000010PARA197427'
,'([0-9]*)([A-Z]*)([0-9]*)'
,'\3-c\2-c\1') from dual
然后我得到197427-cPARA-c000010-c-c
结果。
就像所有文字都被追加到结果的末尾一样。
任何帮助将非常感激。
不确定为什么会这样,但是由于您只有*
量词而没有锚点,因此可能会得到空匹配(或类似的结果)。
固定模式(/^...$/
)似乎有效。使用+
而不是*
任何量词也适用于此样本。
SQL> select regexp_replace('000010PARA197427'
,'([0-9]+)([A-Z]*)([0-9]*)'
,'\3-\2-\1') foo from dual ;
FOO
------------------
197427-PARA-000010
SQL> select regexp_replace('000010PARA197427'
,'^([0-9]*)([A-Z]*)([0-9]*)$'
,'\3-\2-\1') foo from dual ;
FOO
------------------
197427-PARA-000010
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句