ORACLE正则表达式摘录笔记_第1页
ORACLE正则表达式摘录笔记_第2页
ORACLE正则表达式摘录笔记_第3页
ORACLE正则表达式摘录笔记_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ORACLEBW表达式一.正则表达式简介:正则表达式,就是以某种模式来匹配一类字符串。一旦概括了某类字符串,那么正则表达式即可用于针对字符串的各种相关操作。例如,判断匹配性,进行字符串的重新组合等。正则表达式提供了字符串处理的快捷方式。Oracle10g及以后的版本中也支持正则表达式.二.正则表达式相对通配符的优势:1 .正则表达式中不仅存在着代表模糊字符的特殊字符,而且存在着量词等修饰字符,使得模式的控制更加灵活和强大。2 .通配符的使用一般是在特定的环境下,不同的环境下,通配符有可能不同。而正则表达式,不但广泛应用于各种编程语言,而且在各种编程语言中,保持了语法的高度一致性。三.元字符:元

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

3、现m次,m,表示至少出现m次。四.量词量词用来指定量词的前一个字符出现的次数。量词的形式主要有“2”“*、”+7“)。”量词在用于匹配字符串时,默认遵循贪婪原则。贪婪原则是指,尽可能多地匹配字符。例如:字符串“Function(p),(OK),如果使用正则表达式“)进行匹配,则得到字符串“(p),(OK)而非(p);”若欲得到“(p),”则必须取消量词的贪婪原则,此时只需要为量词后追加另外一个数量词”?即可。如上面的正则表达式应该改为“)五 .字符转义:元字符在正则表达式中有特殊含义。如果需要使用其原义,则需要用到字符转义。字符转义使用字符来实现。其语法模式为:,比字符。例如,表示普通字符”.

4、;”“doc匹配字符串”.doc;”而普通字符需要使用“”来表示。六 .字符组.字符组是指将模式中的某些部分作为一个整体。这样,量词可以来修饰字符组,从而提高正则表达式的灵活性。字符组通过()来实现.许多编程语言中,可以利用“$17”$郊来获取第一个、第二个字符组,即所谓的后向引用。在Oracle中,引用格式为“1、2。七 .正则表达式分支可以利用“隈创建多个正则表达式分支。例如,“w4”可以看做两个正则表达式一一“d4和W4,匹配其中任何一个正则表达式的字符串都被认为匹配整个正则表达式。如果该字符串两个正则表达式分支都匹配,那么将被处理为匹配第一个正则表达式分支。八 .字符类.在Oracle

5、中,正则表达式的用法与标准用法略有不同。这种不同主要体现在对于字符类的定义上。Orale中不使用字符“与普通字符组合的形式来实现字符类, 而是具有其特殊语法.ORACLE字符类表不含义:alpha:表示任意字母,正则表达式的一般语法为w。:digit:表示任意数字,正则表达式的一般语法为d。:lower:表示任意小写字母。:upper:表示任意大写字母。:alnum:表示任意字母和数字。:space:表示任意空白字符,正则表达式的一般语法为s。:punct:表示任意标点符号。:xdigit:表示任意16进制的数字,相当于0-9a-fA-F。九 .ORACLE中的四个正则表达式相关函数.1.re

6、gexp_like(expression,regexp)返回值句一个布尔值。如果第一个参数匹配第二个参数所代表的正则表达式,那么将返回真,否则将返回假。举例:select*frompeoplewhereregexp_like(name,,AJ.*$);相当于:select*frompeoplewherenamelike,J%,;2.regexp_instr(expression,regexp,startindex,times)返回找蓟的匹配字符串的位置.参数startindex表示开始进行匹配比较的位置;参数times表示第几次匹配作为最终匹配结果。举例:selectregexp_instr(

7、12.158,.)positionfromdual;regexp_instr(12.158,.用于获取第一个小数点的位置。3.regexp_substr(expression,regexp)返回第二个字符串参数中,与第二个正则表达式参数相匹配的子字符串。举例:createtablehtml(idinteger,htmlvarchar2(2000);insertintohtmlvalues(1,maillink);表html中存储了HTML标签及内容。现欲从标签中获得链接的url,那么可以利用regexp_substr()数。selectid,regexp_substr(html,httpa-z

8、A-Z0-9.:/*)urlfromhtml;4.regexp_replace(expression,regexp,replacement)将expression中的按regexp匹配至U的部分用replacement代替.在参数replacement中, 可以含有后向引用, 以便将正则表达式中的字符组重新捕获。例如,某些国家和地区的日期格式可能为“MM/DD/YYYY,那么可以利用regexp_replace()S数来转换日期格式。selectregexp_replace(09/29/2008,A(0-92)/(0-92)/(0-94)$,3-1-2)replacefromdual;注:在进

9、行正则表达式匹配时,还可以忽略字符大小写形式进行匹配.但是不能解除:upper:和:lower:的作用.select*frompeoplewhereregexp_like(name,or);select*frompeoplewhereregexp_like(name,or,i);-,i?表示忽略大小写十.正则表达式练习第一:REGEXP_LIKE函数用法EMP表结构如下:SQLdescemp;NameNull?TypeEMPNOENAMEVARCHAR2(10)JOBMGRHIREDATESALCOMMDEPTNONOTNULLNUMBER(4)VARCHAR2(9)NUMBER(4)DATE

10、NUMBER(7,2)NUMBER(7,2)NUMBER(2)EMP表中部分数据如下:SQLselectempno,ename,sal,hiredatefromemp;80017-12月-80160020-2月-81125022-2月-81297502-4月-81下面给出几种REGEXP_LIKE函数的例子1、查找员工编号为4位数字的员工信息SQLselectempno,enamefromempwhereregexp_like(empno,,A:digit:4$);或者:selectempno,enamefromempwhereregexp_like(empno,,A0-9$,);EMPNOE

11、NAME7369SMITH7499ALLEN7521WARD7566JONES2、查找员工姓名为全英文的员工信息SQLselectempno,enamefromempwhereregexp_like(ename,,A:alpha:+$,);或者:select*fromempwhereregexp_like(ename,,Aa-zA-Z+$,);EMPNOENAME7369SMITH7499ALLEN7521WARD7566JONES7654MARTIN3、查找员工姓名以“a”字母开头,不区分大小写SQLselectempno,enamefromempwhereregexp_like(ename

12、,,Aa,,,i,);EMPNOENAME7499ALLEN7876ADAMS4、查找员工姓名为全英文,且以“N”结尾的员工信息SQLselectempno,enamefromempwhereregexp_like(ename,,A:alpha:+N$,);EMPNOENAME7499ALLEN7654MARTIN5、查找员工编号以非数字开头的员工信息EMPNOENAMESALHIREDATE7369SMITH7499ALLEN7521WARD7566JONESSQLselectempno,enamefromempwhereregexp_like(empno,1A:digit:);norowsselected第二:REGEXP_INSTR函数用法1、查找员工编号第一个非数字字符的位置SQLselectregexp_instr(empno,A:digit:)positionfromemp;POSITION0002、从第三个字符开始,查找员工编号中第二个非数字字符的位置SQLselectregexp_instr(empno,A:digit:,3,2)positionfromemp;POSITION第三:REGEXP_SUBSTR函数用法1、返回从enamel勺第二个位置开始查找,并且是以“L”开头到结尾的字串SQLse

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论