欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Oracle正则表达式语法与应用.ppt

    • 资源ID:5442173       资源大小:738.50KB        全文页数:26页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Oracle正则表达式语法与应用.ppt

    正则表达式(二),报告人:刘冲,正则表达式概述,在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。,正则表达式语法,1.学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。例一:首先做一个对比-查询value中以1开头60结束的记录并且长度是7位SELECT*FROM fzq WHERE VALUE LIKE 1_60;SELECT*FROM fzq WHERE regexp_like(VALUE,1.60);,正则表达式语法,-查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。-使用like就不是很好实现了。SELECT*FROM fzq WHERE regexp_like(VALUE,10-9460);,正则表达式语法,表1:定位元字符,正则表达式语法,举例:-查询以数字开头的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:digit:);-查询包含数字的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:digit:);-查询以数字结尾的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:digit:$);,正则表达式语法,表2:量词或重复操作符,正则表达式语法,举例:-匹配一个任意的字符SELECT*FROM fzq WHERE regexp_like(VALUE,.$);-匹配所有的字符SELECT*FROM fzq WHERE regexp_like(VALUE,*$);-匹配所有字符串都是0的记录SELECT*FROM fzq WHERE regexp_like(VALUE,0+$);-匹配0次或者1次0的记录SELECT*FROM fzq WHERE regexp_like(VALUE,0?$);,正则表达式语法,实例:-匹配3个0的记录SELECT*FROM fzq WHERE regexp_like(VALUE,03$);-匹配含有3个0的记录SELECT*FROM fzq WHERE regexp_like(VALUE,03);-匹配至少含有3个0的记录SELECT*FROM fzq WHERE regexp_like(VALUE,03,);-匹配至少含有3到5个0的记录SELECT*FROM fzq WHERE regexp_like(VALUE,03,5);,正则表达式语法,表3:预定义的 POSIX 字符类,正则表达式语法,实例:-匹配包含字母字符的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:alpha:);-匹配包含小写字母的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:lower:);-匹配包含大写字母的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:upper:);-匹配包含数字的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:digit:);-匹配包含字母数字字符的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:alnum:);-匹配包含空白字符(禁止打印)的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:space:);-匹配包含标点字符的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:punct:);-匹配包含控制字符的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:cntrl:);-匹配包含可打印字符的记录SELECT*FROM fzq WHERE regexp_like(VALUE,:print:);,正则表达式语法,表4:表达式的替换匹配和分组,正则表达式应用,示例:-匹配包含0或者1的记录SELECT*FROM fzq WHERE regexp_like(VALUE,0|1);-匹配包含01的记录SELECT*FROM fzq WHERE regexp_like(VALUE,(01);-匹配包含0或者1的记录SELECT*FROM fzq WHERE regexp_like(VALUE,01);,正则表达式应用,正则表达式示例讲解:首先看这一个例子:WITH a AS(SELECT 027-83891886 a FROM dual UNION ALL SELECT FROM dual UNION ALL SELECT(045)12345678 FROM dual UNION ALL SELECT 021-88888888-356 FROM dual)SELECT a FROM a WHERE regexp_like(a,(?0d2)-?d8$),正则表达式应用,正则表达式分析:这个表达式可以匹配几种格式的电话号码,像,或,或等。我们对它进行一些分析吧:首先是一个转义字符(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(d2),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(d8)。,正则表达式应用(分支条件),不幸的是,刚才那个表达式也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题,我们需要用到分枝条件。正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。,正则表达式应用(分支条件),WITH a AS(SELECT 027-83891886 a FROM dual UNION ALL SELECT FROM dual UNION ALL SELECT(045)12345678 FROM dual UNION ALL SELECT 0212-8888888 FROM dual)SELECT a FROM a WHERE regexp_like(a,0d2-d8$|0d3-d7$),正则表达式应用(分组),首先举一个例子匹配IP地址的:(d1,3.)3d1,3 是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:d1,3匹配1到3位的数字,(d1,3.)3匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(d1,3)。,正则表达式应用(分组),不幸的是,它也将匹配这种不可能存在的IP地址。如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:(20-4d|250-5|01?dd?).)3(20-4d|250-5|01?dd?)。,正则表达式应用(分组),示例:匹配IP地址WITH a AS(SELECT 255.255.255.255 a FROM dual UNION ALL SELECT 235.210.85.52 FROM dual UNION ALL SELECT 256.256.213.2 FROM dual UNION ALL SELECT 0.0.0.0 FROM dual)SELECT a FROM a WHERE regexp_like(a,(20-4d|250-5|01?dd?).)3(20-4d|250-5|01?dd?)$);,正则表达式应用(零宽断言),零宽断言:,正则表达式应用(贪婪与懒惰),当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。,正则表达式应用(贪婪与懒惰),有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。,正则表达式应用(贪婪与懒惰),懒惰限定符:,正则表达式应用(贪婪与懒惰),贪婪与懒惰匹配示例1:-贪婪匹配SELECT regexp_substr(aababaab,a.*b,1,1)FROM dual;-懒惰匹配SELECT regexp_substr(aababaab,a.*?b,1,1)FROM dual;,正则表达式应用(贪婪与懒惰),贪婪与懒惰匹配示例2:-贪婪和懒惰WITH a AS(SELECT aabaaba a FROM dual UNION ALL SELECT abababab FROM dual UNION ALL SELECT baabaaab FROM dual UNION ALL SELECT aaaaaabbbb FROM dual)SELECT a,regexp_substr(a,a.*b,1,1),regexp_substr(a,a.*?b,1,1)FROM a;,

    注意事项

    本文(Oracle正则表达式语法与应用.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开