7) '{m,n}' 单字符匹配,一个精确地出现次数范围,m=
8) '\' 转义符。说明要匹配的字符是一个特殊字符;
9) '|'多字符匹配,相当于‘或’,两项之间的任意选择。例如a|b即是可以为a也可以为b,g(e|o)t就是匹配get和got;
10) '[]'多字符匹配,相当于集合,对[]中的字符进行任意匹配。例如y[iao]ng就是匹配ying/yang/yong;
最后说明比较特殊的是[::],它指定一个字符类,可以匹配该类中的任意字符。这里的字符类包括:
[:alphanum:] 可以匹配字符0-9、A-Z、a-z;
[:alpha:]可以匹配字符A-Z、a-z;
[:blank:]可以匹配空格或者tab键;
[:digit:]可以匹配数字 0-9;
[:upper:]可以匹配字符A-Z;
[:lower:]可以匹配字符a-z;
一)REGEXP_LIKE(x,pattern[,match_option]):用于在x中查找正则表达式pattern。match_option的取值如下:
'c' 说明在进行匹配时区分大小写(缺省值);
'i' 说明在进行匹配时不区分大小写;
例如:
SELECT * FROM a_user WHERE regexp_like(CODE,'[^[:digit:]]');
SELECT * FROM a_user WHERE regexp_like(CODE,'^[[:lower:]]|[[:digit:]]');
SELECT * FROM emp WHERE REGEXP_LIKE(TO_CHAR(birthdate,'YYYY'),'^198[0-9]$') AND REGEXP_LIKE(ename,'^F');
二)REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]]):
用于在x中尝试匹配pattern,并返回匹配的位置。
'start' 开始查找的位置;
'occurrence' 说明应该返回第几次出现pattern的位置;
'return_option' 说明应该返回什么整数。若该参数为0,则说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后的字符的位置;
以上这三项皆为可选项。
例如:
SELECT CODE,regexp_instr(CODE,'[[:digit:]]+$') FROM a_user WHERE regexp_like(CODE,'[[:digit:]]$');
三)REGEXP_REPLACE(x,pattern,replace_string[,start[,occurrence[, match_option]]]):
用于在x中查找pattern,并将其替换为replae_string。
start,occurrence,match_option皆为可选项。
例如:
select regexp_replace(’I love you my sweet’,'s[[:alpha:]]{4}’,'honey’) from dual
四)REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]]):
用于在x中查找pattern并返回给定模式匹配的字符串。
参数同REGEXP_INSTR函数。
例如
SELECT CODE,regexp_instr(CODE,'[[:digit:]]+') FROM a_user WHERE regexp_like(CODE,'[[:digit:]]$');
select regexp_substr('I hate people ! My patience has ended ! Where shall my blood be spilled!', '[a-z]{5,}',1,2) from dual;