Oracle10g正则表达式及常用函数汇总.docVIP

  • 1
  • 0
  • 约5.18千字
  • 约 5页
  • 2019-07-03 发布于广东
  • 举报
oracle的正则表达式 oracle的正则表达式(regular expression)简单介绍 目前,正则表达式已经在很多软件中得到广泛的应用,包括(Linux, Unix等),HP 等操作系统,PHP, C#, Java等开发环境。 Oracle 10g正则表达式提高了 SQL灵活性。有效的解决了数据有效性,重S词的辨认,无 关的空白检测,或者分解多个正则组成 的字符串等问题。 Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKE、REGEXP_INSTR、 REGEXP SUBSTR、和 REGEXP REPLACE。 它们使用POSIX正则表达式代替了老的百分号(%)和通配符(_)字符。 特殊字符: 匹配输入字符串的开始位置,在方拈号表达式中使用,此时它表示不接受该字符集合。 匹配输入字符串的结尾位置。如果设置了 RegExp对象的Multiline属性,则$也匹 配’ \n’ 或’ \r’。 匹配除换行符\n之外的任何单字符。 匹配前面的子表达式零次或一次。 匹配前面的子表达式零次或多次。 select regexp replace C dsfsdfsf’,’ a*’,’ A’)from dual AdAsAfAsAdAfAsAfA 因为其可以匹配a没有出现的地方,所以在每个字符前面和后面都会插A,相当于将两个字 符中间的空位也当做一次匹配 select regexp replace(’ adsfsdfsf’,’ a*’,’ A’)from dual AAdAsAfAsAdAfAsAfA 冈为其可以匹配a没有fli现的地方,所以在每个字符前而和后而都会插A,相当?丁将两个字 符中间的空位也当做一次匹配,对于有a出现的地方再换成A 正则表达式是最大限度匹配,会匹配所有能够匹配的字符串中长度最长的串 Select REGEXP_REPLACECaa bb cd) FROM dual; 把*后面的空格去掉显示结果为什么是两个A不是一个A 因为其首先将匹配没有任何字符的情况加一个A,再对能匹配的最大字符串即aa bb cc换成 A Select REGEXP_REPLACE(aa bb cc.;.* *,W) FROM dual; 结果为Acc,注意表达式在.*后面有个空格 ’+’匹配前面的子表达式一次或多次。 ’()’标记一个子表达式的开始和结束位置。 正则表达式屮括号的三种功能: 限定多选结构的范网;如:ab(c|d|e)fgh,注意上述写法与去掉括号时abc|d|efgh的区别 标注虽词作用的元索;如:ab(cde)+fgh,注意上述写法与去掉括号时abcde+fhg的区别 为引用捕获文本;作为这个用法加括号是为了返回或引用匹配结果 ’ □’标记一个中括号表达式。 可以用來指定可以取的字符范围,如[a-z],或者排除掉D中的内容 ’ {m,n}’ 一个精确地出现次数范围,m=〈出现次数〈=n, ’{…’表示出现⑴次,’ {m,}’表示至 少出现m次。 ’I’指明两项之间的一个选择。例子’7[a-z] + |[0-9]+)$’表示所有小写字母或数字组合成 的字符串。 \nurn匹配num,其屮mim是一个正整数。对所获収的匹配的引用。 正则表达式的一个很有用的特点是可以保存子表达式以后使用,被称为Backreferoncing. 允许复杂的替换能力 如凋整一个模式到新的位賈或者指示被代替的字符或者甲.词的位賈.被匹配的子表达式存 储在临时缓冲区屮, 缓冲区从左到右编号,通过\数字符号访问。下面的例子列出了把名字aa bb ex变成 cc, bb, aa. Select REGEXI)_REPLACE(’aa bb cc’,’(.*) (. *) (.*)’,’ \3, \2,\f) FROM dual; REGEXP REPLACE(’ ELLENHILDISMIT cc, bb, aa ’\’转义符。 字符簇: [[:alpha:]]任何字母。任何字符? [[:digit:]]任何数字。 [[:alnum:]]任何字母和数字。任何字母? [[:space:]]任何空白字符。 [[:upper:]]任何大写字母。 [[:lower:]]任何小写字母。 [[:punct:]]任何标点符号。 [[:xdigit:]]任何16进制的数字,相当于[0-9a-fA-F]。 各种操作符的运算优先级 \转义符 (),(?,(?=),[]圆括号和方括号 *,+,?, {n}, {n,}, {n, m}限定符 ,$,\anymetacharacter 位置和顺序 I “或”操作 -测试数据 create table test(me varchar2 (60)); insert into test values(’

文档评论(0)

1亿VIP精品文档

相关文档