oracle的正则表达式(regular expression)

来源:互联网 发布:正规网络招聘 编辑:程序博客网 时间:2024/06/01 07:28

当前,正则表达式已经在很多软件中得到广泛的应用,包括Linux, UnixHP等操作系统,PHPC#Java等开发环境,ORACLE则在10G中推出了自己的正则表达式。

Oracle 10g正则表达式提高了SQL灵活性,有效的解决了数据有效性, 重复词的辨认, 无关的空白检测,或者分解多个正则组成的字符串等问题。

Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKEREGEXP_INSTRREGEXP_SUBSTR、和REGEXP_REPLACE
它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

元字符:
'^'
匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
'$'
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配'n' 'r'
'.'
匹配除换行符 n之外的任何单字符。
'?'
匹配前面的子表达式零次或一次。
'*'
匹配前面的子表达式零次或多次。
'+'
匹配前面的子表达式一次或多次。
'( )'
标记一个子表达式的开始和结束位置。
'[]'
标记一个中括号表达式。
'{m,n}'
一个精确地出现次数范围,m=<出现次数<=n'{m}'表示出现m次,'{m,}'表示至少出现m次。
'|'
指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
num
匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

字符簇:
[[:alpha:]]
任何字母。
[[:digit:]]
任何数字。
[[:alnum:]]
任何字母和数字。
[[:space:]]
任何白字符。
[[:upper:]]
任何大写字母。
[[:lower:]]
任何小写字母。
[[:punct:]]
任何标点符号。
[[:xdigit:]]
任何16进制的数字,相当于[0-9a-fA-F]

各种操作符的运算优先级:
转义符
(), (?:), (?=), []
圆括号和方括号
*, +, ?, {n}, {n,}, {n,m}
限定符
^, $, anymetacharacter
位置和顺序
| “
操作

实例:

--测试数据

一、REGEXP_LIKE

二、REGEXP_INSTR

三、REGEXP_SUBSTR

四、REGEXP_REPLACE