版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、详解SQL与PL/SQL2014 V1.5第6周法律【】和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被责任。法律和经济课程详情炼数成金培训http:2014 V1.52正则表达式正则表达式概述正则表达式语法及功能正则表达式应用如何读书2014 V1.53正则表达式概述示例名称理论算法优势2014 V1.54正则表达式概述示例匹配 utp、http、ftp 的表达式传统: str in (utp, http, ftp)正则: str match (u|ht|f)tp$正则表达式 可以匹配包含|三)? 的含义?、的字符串2014 V1.55正则
2、表达式概述名称Regular Expres简写:regex or regexp译名:“Regular”一般被译为“正则”、“正规”、“常规”。此处的“Regular”即是“规则”、“规律”的意思,Regular Expres译名一般为“正规化表示法”。即“描述某种规则的表达式”之意。2014 V1.56正则表达式概述理论正则表达式可以用形式化语言理论的方式来表达。正则表达式由常量和算子组成,它们分别指示字符串的集合和在这些集合上的运算。给定有限字母表 定义了下列常量:(“空集”) 指示集合 (“空串”) 指示集合 (“文字字符”) 在 中的 a 指示集合 a定义了下列运算:(“串接”) RS
3、指示集合 | R, S 。例如: ab,cd,ef = abd, abef, cd, cef。(“选择”) R|S 指示 R 和 S 的并集。例如:ab, c|ab, d, ef= ab, c, d, ef(“Kleene星号”) R* 指示包含 并且闭包在字符串串接下的 R 的最小超集。这是可以通过 R 中的零或多个字符串的串接得到所有字符串的集合。例如,ab, c* = , ab, c, abab, abc, cab, cc, ababab, . 。上述常量和算子形成了克莱尼代数。2014 V1.57正则表达式概述理论表示法很多优先级使用对选择使用符号 , + 或 替代竖杠(管道线)。为了
4、避免括号,假定 Kleene 星号有最高优先级,接着是串接,接着是并集。如果没有歧义则可以省略括号。例如,(ab)c 可以写为 abc 而 a|(b(c*) 可以写为 a|bc*。此优先级规则在实际计算机的实现中一样有效。2014 V1.58正则表达式概述算法正则表达式计算本质上是一种模式匹配算法快速模式匹配(KMP)是一种高效的模式匹配算法2014 V1.59正则表达式概述历史最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。1940年,Warren McCulloch与Walt制元。itts将神经系统中的神经元描述成小而简单的自动控1950年代,数学家克莱尼利用称之为“
5、正则集合”的数学符号来描述此模型。肯将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。自此,正则表达式被广泛地使用于各种Unix或者类似Unix的工具,例如Perl。标准IEEE Portable Operating Systemerface (IX) standard draft 1003.2/D11.2Unicode Regular ExpresGuidelines of the Unicode Consortium2014 V1.510正则表达式概述不同语言中有不同的实现例: . (period,句点)在不同语言中的含义2014 V1.511正则表达式概述O
6、racle支持的正则表达式IX BRE & EREOracle SQL Multilingual Exten不支持部分操作符需注意在不同环境下的正则表达式s toIX Standard器对同一多语言正则表达式的结果可能是不一样的Oracle SQL PERL-Influenced Exten只是部分支持,不是完全支持s toIX Standard与IX BRE和ERE的无效结论:在其他环境下测试通过的正则表达式,在Oracle SQL下未必能通过!2014 V1.512正则表达式概述优势简洁:使用单个字符串来描述、匹配一系列符合某个句在Oracle中使用正则表达式的优势避免将大量的字符串匹配运
7、算放到中间层或客户端处理;则的字符串服务器端使用正则表达式加强约束验证,避免客户端进行重复的验证。2014 V1.513正则表达式语法及功能语法regexp*函数ASCII2014 V1.514正则表达式语法及功能语法字符集合边界符集合重复次数集合组合操作符匹配操作符转义操作符2014 V1.515正则表达式语法及功能语法字符集合1/32014 V1.516IXPERL描述.除换行外任意字符。仅在多行模式下,还可表示换行符n:alnum:A-Za-z0-9:alpha:A-Za-z:bl: ,标准是空格和TAB,但Oracle里只有空格!:cntrl:x00-x1Fx7F:digit:d0-9
8、:graph:x21-x7E,即所有可见字符:pr:x20-x7E,即空格所有可见字符正则表达式语法及功能语法字符集合2/32014 V1.517IXPERL描述:punct:标点。!#$%&()*+,./:;?_|-:space:s tnvfr ,空白字符:lower:a-z:upper:A-Z:xdigit:A-Fa-f0-9wA-Za-z0-9_,即数字字母和下划线W, S, D均为各自小写字母所表示字符集合的取反正则表达式语法及功能语法字符集合3/32014 V1.518IXPERL描述:class:字符类。class如alnum、digit等,见前两页。.element.整理类。受N
9、LS_SORT影响。将多字节字符当作单字节字符。如在西班牙语中ch、ll都是用多字节表示的单字节。=char=等同类。在当前语言(Locale)下,匹配所有的属于相同的IX等同类字符指定的字符。如在西班牙语中,=n=指定了等同类字符n,它可以匹配El Nio中的N和 .正则表达式语法及功能语法边界符集合2014 V1.519IXPERL描述每一行的开头,单行模式下等价于字符串的开头$每一行的结尾,单行模式下等价于字符串的结尾A整个字符串的开头,即便在多行模式下也是如此Z整个字符串的结尾,即便在多行模式下也是如此在单行模式下,和A等价,$和Z等价。正则表达式语法及功能语法重复次数集合贪婪模式会获
10、取尽可能多的字符,而非贪婪模式会获取尽可能少的字符。尽可能最2014 V1.520贪婪非贪婪描述*?零次或多次?零次或一次+?一次或多次mm?正好m次,贪婪与非贪婪一样的m,m,?至少m次m, nm, n?最少m最多n次正则表达式语法及功能语法组合操作符1/22014 V1.521IXPERL描述方括号内任意字符或字符集合中的一个。在其中所有的操作符号都被视为普通符号,但以下除外:范围操作符:- 。但当-位于字符列表的第一个或最后一个字符时,或位于范围的结尾时,会被当作-本身来IX字符类::IX整理类:.IX等同类:=当右方括号出现在列表的第一个位置时,它会被当作本身来处理。正则表达式语法及功
11、能语法组合操作符2/2优先级比较:圆括号重复次数操作符和或。例如,(f|ht)tps?: 表示ftp:ftps:http:https:2014 V1.522IXPERL描述方括号内为第一个字符时,表示与其后所有字符都不匹配的字符()圆括号,将复杂表达式当作单一表达式来处理.|.或。abc和。直接将字符连在一起写正则表达式语法及功能语法匹配操作符2014 V1.523IXPERL描述n即后向。n为19,标识由圆括号里取得的匹配字符串。方向是从左到右。在regexp_replace函数中,允许在模式表达式和替换表达式中都使用n正则表达式语法及功能语法转义操作符2014 V1.524描述将其后紧跟着
12、的操作字符当作普通字符。例如 abc*def 可以匹配 abdef或abcccdef等,但无法匹配abc*def,后者需要abc*def才能匹配注意要和PERL表示法中的d和后向中的1、2等用到的地方区分开。正则表达式语法及功能regexp*函数函数一览参数释义2014 V1.525正则表达式语法及功能regexp*函数函数一览regexp_count(src, pattern,regexp_instr(src, pattern,参数, match), 11g新增此函数, occur, retopt, match, subexpr),11g新增subexprregexp_like(src, p
13、attern, match)regexp_substr(src, pattern, occur, match, subexpr),11g新增subexpr参数regexp_replarc, pattern, replace_str, occur, match)2014 V1.526正则表达式语法及功能regexp*函数参数释义1/2src:源字符串;pattern:要匹配的正则表达式;:从源字符串的第几个字符开始匹配;occur:指定pattern的第几次出现;retopt:返回选项,regexp_instr的位置。0代表前者,1代表后者;。用于设置返回值是pattern出现之时的位置还是之后
14、replace_str:要替换成的字符串,可以使用正则表达式中的后向操作符;subexpr:11g新增subexpr参数,regexp_instr和regexp_substr特有。指定返回pattern的第几个子表达式。0表示返回整个pattern匹配的字符串。例如0123(abc)(de)f)ghi)45(678)就包含abcdefghi、abcdef、abc、de、678这五个子串(已按顺序排列);2014 V1.527正则表达式语法及功能regexp*函数参数释义2/2match:匹配参数配置,让正则更易用。i:强制设为大小写不敏感;c:强制设为大小写敏感;n:允许.(句点,period
15、)匹配换行符(n,,即x0A或chr(10)),默认不匹配换行符;m:将src当作多行而不是单行字符串来处理,默认当作单行来处理;x:忽略pattern中的空格,默认情况下pattern中的空格是代表其本身;Oracle的默认设置是.不匹配换行符,src当作单行字符串,是否大小写敏感依赖于NLS_SORT的设置;Oracle允许同时设置多个选项,但若设定了具备相反含义的参数设置时,以最后一个出现的为准,例如ic就表示c起作用。2014 V1.528正则表达式语法及功能ASCIIASCII码表create table ascii_tab(n number(5), s varchar2(4);in
16、serto ascii_tab select rownum-1, chr(rownum-1) from dual connect byrownum=129 union select 255, chr(255) from dual;commit;测试select * from ascii_tab where regexp_like(s,:upper:);select * from ascii_tab where regexp_like(s,:cntrl:);select * from ascii_tab where regexp_like(s,:space:);2014 V1.529正则表达式应
17、用验证格式号码电子邮箱IP地址查找替换2014 V1.530正则表达式应用验证格式号码座机市话,7位: d7市话,8位::digit:8移动13段:134-9d8国内长途,区号和0d2,3-d3,11国际长途前缀00d1,4分开分机,分机号为3位或4位,用#与主号码隔开假定主号码为7位到8位:d7,8#d3d?2014 V1.531正则表达式应用验证格式电子邮箱必须带符号,并且前面至少3位最多20位数字字母,后面也由字母数字组成并至少包含一个.,用.隔开的每部分不少于3字符不超过15字符:alnum:3,20(:alnum:3,15.)+:alnum:3,15同上,最后部分必须为或或net或:
18、alnum:3,20(:alnum:3,15.)+(cn|com|net|同上,邮箱用户名允许带.:alnum:.3,20(:alnum:3,15.)+(cn|com|net|)2014 V1.532正则表达式应用验证格式IP地址IPV4,分四段,用.隔开,每段最少一位最多三位数字(:digit:1,3.)3:digit:1,3同上,数字范围在0255之间(dd?|1d0,2|2(0-4d|50-5).)3(dd?|1d0,2|2(0-4d|50-5)$2014 V1.533正则表达式应用验证格式必须是http(s)开头的以或结尾的,前面用.隔开的最多三段最少两段,只允许小写字母数字和横线,端
19、口为80或8080https?:/(:lower:digit:+.)2,3(com|net).cn(:8080)?/2014 V1.534正则表达式应用查找替换格式化将IPV4的地址每段都格式化为三位数的,不够的前面补0create table ip(str varchar2(20);insertinsertinsertcommit;o ip values();o ip values(1);o ip values();select str, replace(trim(. fromregexp_replace(regexp_replace(.|replarepaired_str from ip;tr,.,.)|.,.(d).,.001.),.(dd).,.01.),.,.)2014 V1.535正则表达式应用查找替换格式化将字符串str逐字符重复4次,例如abc变为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《焊接生产与管理》教学大纲
- 北京青年政治学院学生会学习部2012年辩响青春辩论赛策划案
- 基础业务素质真题
- 教案模板-数据库原理
- 建筑装饰施工电子教案
- 玉溪师范学院《社区工作》2023-2024学年第一学期期末试卷
- 化学实验基本技能训练(一)第二课时(教案)
- 眼镜片账务处理实例-记账实操
- 国标苏教版第十册数学全册教案
- 2019粤教版 高中美术 选择性必修6 现代媒体艺术《第一单元 认识现代媒体艺术》大单元整体教学设计2020课标
- 采暖季洁净型煤采购技术服务投标方案(技术方案)
- 施工机械设备配置方案
- 《电气控制系统设计与装调》教案 项目五 任务一小车自动往返控制线路设计与安装(位置开关)
- GB/T 44536-2024CVD陶瓷涂层热膨胀系数和残余应力试验方法
- 纸夹子市场分析及投资价值研究报告
- 神州十三号飞船知识科普宣传主题
- 《大学生创新创业基础教程》第六章创业资源与融资
- 2024-2030年中国骆驼奶行业市场发展趋势与前景展望战略分析报告
- 专职会计劳务合同模板
- 智慧城市会展融合
- 2024年秋新沪教牛津版英语三年级上册课件 Unit 5 第2课时
评论
0/150
提交评论