ORACLE 使用正则表达式的函数

本文详细介绍了Oracle 10G开始引入的正则表达式函数,包括REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE,并解释了正则表达式中常用元数据的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORACLE10G开始引入了可以使用正则表达式的函数:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE。

正则表达式是对于字符串进行匹配的一种模式。正则表达式中常用到的元数据如下:
1)  '^' 匹配输入字符串出现在开始位置;
2)  '$' 匹配输入字符串出现在结尾位置;
3)  '*' 单字符匹配,匹配该字符前面的一个字符任意次数出现。例如my*oracle 可以匹配 moracle,myoracle,myyoracle,myyyoracle等等;
4)  '?' 单字符匹配,匹配前面的子表达式零次或一次。例如my?oracle 仅仅匹配 moracle,myoracle;
5)  '+' 单字符匹配,匹配前面的子表达式一次或多次。例如my*oracle 可以匹配 myoracle,myyoracle,myyyoracle等等;
6)  '{n}' 单字符匹配,匹配前面的字符串恰好是n次,其中n是整数。例如ho{2}pchina可以匹配hoopchina;
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;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26770925/viewspace-1370905/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26770925/viewspace-1370905/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值