select regexp_replace('adfadfa (main) next ','(\()([^\)]*)(\))','<\2>') from dual
output: adfadfa
这里还是一个\做为转义字符。
再来一个ip格式转换的例子吧,我们一般的IP的格式是12.19.168.27现在要不足3位的补足前面为0,结果是012.019.168.027
select regexp_replace(
regexp_replace('12.19.168.27','([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',
'00\1.00\2.00\3.00\4') ,
'([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}$)','\2\4\6\8')
from dual
output: 012.019.168.027
这里我分成两步来操作,regexp_replace('12.19.168.27','([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',
'00\1.00\2.00\3.00\4')我首先让每个小字符串做添加0,这样每个字符串都会大于3,再
'([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}$)','\2\4\6\8')
这整个字符串分成8段,这样我们只要2、4、6、8这四个段就可以了。
下面一个例子中,在每两个字符之间插入一个空格符
SELECT regexp_replace('YAHOO', '(.)', '\1 ') AS output FROM dual;
Output: Y A H O O
这个用一个循环的方式去操作,还蛮好的。
select regexp_replace(
regexp_replace('12.19.168.27','([^.]+)'
,'00\1')
,'([^.]*)([^.]{3})','\2')
from dual
接着刚才那个,我们可以把replace循环替换的方式来操作。