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是不能替换的 ,希望有朋友能够纠正,在此谢过。