oracle 10g中替换指定字符串

来源:互联网 发布:威宁农村淘宝网点查询 编辑:程序博客网 时间:2024/06/03 19:59

oracle 10g中替换指定字符串
原始字符串为1001-1002-(1001+100193+100194+100195)+1001中的1001,其中100193、100194、100195中1001不能替换掉。

select regexp_replace('1001-10011-(1001+1001+1001)+1001',
      '([^[:digit:]]*)1001([^[:digit:]]|$)' , '\1888\2') from dual;
      888-10011-(888+888+888)+888
  匹配正则: (^|[^[:digit:]])1001([^[:digit:]]|$)
  解析:([^[:digit:]]*)  --非数字+1001或1001
            ([^[:digit:]]|$)  --1001+非数字或 以1001结尾
        
  替换字符串正则: \1888\2
  解析:\1表示  (^|[^[:digit:]])即第一对()中匹配的内容
        \2表示  ([^[:digit:]]|$)即第二对()中匹配的内容
       
如果在java中 ,匹配正则:\b1001\b 即可,替换字符串正则:888。

 

 

1001-10011001-(1001+1001+1001)+1001

 

--888-1001888-(888+888+888)+888

还是存在问题  本来 10011001是不能替换的 ,希望有朋友能够纠正,在此谢过。

0 0