Oracle正则表达式(三)

2014-11-24 18:43:55 · 作者: · 浏览: 1
replace就可以搞定了,但是我们现在做的是(之后必须有)这样的()我们才替换把<>.


select regexp_replace('adfadfa (main) next ','(\()([^\)]*)(\))','<\2>') from dual


output: adfadfa

next


这里还是一个\做为转义字符。



再来一个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循环替换的方式来操作。