-------------------------------------------正规表达式:-----------------------------------------------
正规表达式是符号和元素的集合,这些集合可以使用户匹配特定的文本模式。正规表达式采用元符号的组合来定义各种匹配和搜索标准。在正规表达式中,匹配是大小写敏感的。
元符号描述示例
*匹配0个或多个任意的字符bd*匹配bdq,bdabc
?匹配一个任意的字符B?d匹配BDd,Bld
^表示字符串的开始^abc与abced,abcfr可acdv
$表示字符串的末尾bas$以bas为结尾的所有字符串
x|y匹配x或ywindo|door表示windo或者dr
[]匹配[]中的任意一个字符ba[a-b]匹配baa或bab
{m}可以匹配m次m[0-9]{3}匹配m7,m12,m123
{m,n}至少m次最多n次
\n表示前一个表达式可以重复N次[aeiou]\2匹配aatldf但abldf
[::]指定一个字符类,匹配该类中的任意一个字符
使用正规表达式:
函数描述
Regexp_like()类似于like运算符,可以使用正规表达式执行模式匹配操作
Regexp_instr()instr运算的扩张,可以用来搜索匹配正规表达式模式的输入字符串
Regexp_replace()replace的扩展,用户搜索符合正规表达式模式的输入字符串,并用指定的字符代替这些字符串
Regexp_substr()substr函数的扩展,用户搜索符合正规表达式模式的输入字符串,输出是这些搜索到的字符串
说明:
一:Regexp_like(search_string,pattern [,match_option]);
(1):search_string是搜索值
(2):parrern是使用得正规表达式且其长度限制在512字节内
(3)match_option:是一个文本串,可以使用户设置该函数的匹配行为
Match_option参数表:
值描述
C匹配时,大小写敏感,是默认设置
I匹配时,大小写不敏感
N允许使用圆点(。)匹配任何新增的字符
M
Eg:
Select author_id,last_name from author where regexp_liek(last_name,’e$’);--搜索以e结尾的作者姓名
二:regexp_instr(search_string,pattern,[,position [,occurrence [,return_option [,match_option ]]]]);
(1) :search_string是搜索值
(2):parrern是使用得正规表达式且其长度限制在512字节内
(3)position是一个表示搜索开始位置的正整数,默认为一。
(4)occurrence定义了搜索模式的发生次数,默认为一,
(5)return_optionshi是一个数字,表示该函数应该返回的值。该数字可以是0(表示开始匹配的位置)也可以是非0(表示匹配的结束位置)
(6)match_option是设置该函数匹配行为的参数
Eg:
Select regexp_instr(‘orcale database 10g’,’a’,1,2) from dual;
三:
regexp_replace((search_string,pattern,[,position[,occurrence[,return_option [,match_option ]]]]);
(1) :search_string是搜索值
(2):parrern是使用得正规表达式且其长度限制在512字节内
(3)position是一个表示搜索开始位置的正整数,默认为一。
(4)occurrence定义了搜索模式的发生次数,默认为一,
(5)return_optionshi是一个数字,表示该函数应该返回的值。该数字可以是0(表示开始匹配的位置)也可以是非0(表示匹配的结束位置)
(6)match_option是设置该函数匹配行为的参数
)
Select last_name,regexp_replace(last_name,’e’,’E’) from duthors where author_id<3
四:
Regexp_substr(seach_string,pattern [,position ,[,occurrence [,match_option]]])
(1) :search_string是搜索值
(2):parrern是使用得正规表达式且其长度限制在512字节内
(3)position是一个表示搜索开始位置的正整数,默认为一。
(4)occurrence定义了搜索模式的发生次数,默认为一,
(5)match_option是设置该函数匹配行为的参数
Eg:
Select last_name,regexp_substr(last_name,’[rst][a-z]{4}’) from authors where length(regexp_sustr(last_name,[rst][a_z]{4}));