07_oracle正则表达式语法
1.ORACLE中的支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功能相似
2,REGEXP_INSTR :与INSTR的功能相似
3,REGEXP_SUBSTR :与SUBSTR的功能相似
4,REGEXP_REPLACE :与REPLACE的功能相似
它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。POSIX 正则表达式由标准的元字符(metacharacters)所构成。
2.oracle正则表达式中常用到的元字符(metacharacters)如下:
^ 匹配字符串的开头位置,在方括号中应用。
$ 匹配字符串的结尾位置。
*匹配该字符前面的一个字符0次,1次或者多次出现。
+匹配该字符前面的一个字符1次或者多次出现。
? 匹配该字符前面的一个字符0次或1次或者多次出现。
{n}匹配一个字符串n次,n为正整数。例如:hel{2}o所匹配的是hello
{n,m}匹配一个字符串至少n次,至多m次。其中n和m都是整数。
. 匹配除了null之外的任何单个字符串
(pattern)这个是用来匹配指定模式的一个子表达式
x|y 匹配x或者y,其中x和y是一个或者多个字符
[abc]匹配括号中的任意一个字符。例如:[ab]bc可以匹配abc和bbc
[a-z]匹配指定范围内的任意字符串。例如[A-G]hi可以匹配Ahi至Ghi
[::]指定一个字符类,可以匹配该类中的任意字符 这里的字符类包括:
[:alphanum:]可以匹配字符0-9、A-Z、a-z
[:alpha:]可以匹配字符A-Z、a-z
[:blank:]可以匹配空格或者tab键
[:digit:]可以匹配数字0-9
[:gragh:]可以匹配非空字符
[:punct:]可以匹配. , ” ‘等标点符号。
[:upper:]可以匹配字符A-Z
[:lower:]可以匹配字符a-z
3. REGEXP_LIKE函数基本语法
REGEXP_LIKE ( expression, pattern [, match_parameter ] )
参数
expression - 字符表达式,例如列或字段。它可以是VARCHAR2,CHAR,NVARCHAR2,NCHAR,CLOB或NCLOB数据类型。
pattern - 正则表达式匹配信息。它可以是以下的组合:
4.REGEXP_INSTR函数基本语法:
REGEXP_INSTR (source_char, pattern [, position [, occurrence [, return_option [, match_parameter ] ] ] ] )
参数
source_char
搜索值的字符表达式,可以是任何数据类型CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB的。
pattern
找到字符串中的第一个”e”字的位置。
SELECT REGEXP_INSTR ('hello itmyhome', 'e') FROM dual;
-- Result: 2
下面这个例子给出一个字符串,
“1”为开始位置 “2”是搜索第二个匹配的,”0”是return_option 返回出现的第一个字符位置
“c”是区分大小写 ,所以将返回13
SELECT REGEXP_INSTR ('my is itMyhome', 'm', 1, 2, 0, 'c') FROM dual;
-- Result: 13
5.REGEXP_SUBSTR函数基本语法:
regexp_substr(srcstr,pattern[,start[,occurence[match_option]]])
srcstr待匹配的函数
pattern正则表达式元字符构成的匹配模式
start 开始匹配的位置,如果不指定默认为1
occurrence 匹配的次数,如果不指定,默认为1
match_option 匹配参数,‘c’区分大小写(默认选项),‘i’ 不区分大小写
select regexp_substr(‘LC0021’,’^LC[0-9]{4}’ ) value from dual;
select regexp_substr(‘OD0001’,’^LC[0-9]{4}’ ) value from dual;
select regexp_substr(‘Y’,’(N|Y)’ ) value from dual;
6.REGEXP_REPLACE函数基本语法: