我想替换字符串中完全数量的连续数字,这意味着我不希望它替换属于较长数字序列的出现次数。
例如:
select regexp_replace('filename07_20160723', '[0-9]{2}', '') from dual
返回
filename_
但我希望它返回
filename_20160723
如何仅替换单独的'07'
(两边都有非数字字符)?
答案 0 :(得分:0)
因为oracle不支持环顾四周,要替换完全 2位数(任何一边都没有数字),要么捕获非数字并将它们放回去:
regexp_replace('filename07_20160723', '(\D)\d\d(\D)', '\1\2')
注意:作为@mathguy points out,任意一方都会使用非数字字符,因此他们无法参与其他匹配。这具有以下效果:
x33y44z -> xy44z not xyz
因为'y'
无法再次参与以允许第二个数字对匹配。