ORACLE中支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功能相似,比LIKE强大得多。
2,REGEXP_INSTR :与INSTR的功能相似。
3,REGEXP_SUBSTR :与SUBSTR的功能相似。
4,REGEXP_REPLACE :与REPLACE的功能相似。

REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter)函数(10g新函数)
描述:字符串替换函数。相当于增强的replace函数。Source_string指定源字符表达式;pattern指定规则表达式;replace_string指定用于替换的字符串;position指定起始搜索位置;occurtence指定替换出现的第n个字符串;match_parameter指定默认匹配操作的文本串。ITPUB个人空间.x mz\ n`r­g9[1`
   其中replace_string,position,occurtence,match_parameter参数都是可选的。

REGEXP_SUBSTR(source_string,
pattern[,position [, occurrence[, match_parameter]]])
函数(10g新函数)
描述:返回匹配模式的子字符串。相当于增强的substr函数。Source_string指定源字符表达式;pattern指定规则表达式;position指定起始搜索位置;occurtence指定替换出现的第n个字符串;match_parameter指定默认匹配操作的文本串。
   其中position,occurtence,match_parameter参数都是可选的。

match_option的取值如下:
  'c'   说明在进行匹配时区分大小写(缺省值);
  'i'    说明在进行匹配时不区分大小写;
  'n'   允许使用可以匹配任意字符的操作符;
  'm'   将x作为一个包含多行的字符串。

REGEXP_LIKE(source_string,
pattern[, match_parameter])
函数(10g新函数)
描述:返回满足匹配模式的字符串。相当于增强的like函数。Source_string指定源字符表达式;pattern指定规则表达式;match_parameter指定默认匹配操作的文本串。
   其中position,occurtence,match_parameter参数都是可选的。

REGEXP_INSTR(source_string,
pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])
函数(10g新函数)
描述: 该函数查找 pattern ,并返回该模式的第一个位置。您可以随意指定您想要开始搜索的 start_position。 occurrence 参数默认为 1,除非您指定您要查找接下来出现的一个模式。return_option 的默认值为 0,它返回该模式的起始位置;值为 1 则返回符合匹配条件的下一个字符的起始位置。

.     匹配字符

.     重复字符

.     定位字符

注:定位字符可以应用于字符或组合,放在字符串的左端或右端

.     分组字符

分组字符

 

 

()

此字符可以组合括号内模式所匹配的字符,它是一个捕获组,也就是说模式匹配的字符作为最终设置了ExplicitCapture选项――默认状态下字符不是匹配的一部分

输入字符串为:ABC1DEF2XY

匹配3个从A到Z的字符和1个数字的正则表达式:([A-Z]{3}\d)

将产生两次匹配:Match 1=ABC1;Match 2=DEF2

每次匹配对应一个组:Match1的第一个组=ABC;Match2的第1个组=DEF

有了反向引用,就可以通过它在正则表达式中的编号以及C#和类Group,GroupCollection来访问组。如果设置了ExplicitCapture选项,就不能使用组所捕获的内容

(?:)

此字符可以组合括号内模式所匹配的字符,它是一个非捕获组,这意味着模式所的字符将不作为一个组来捕获,但它构成了最终匹配结果的一部分。它基本上与上面的组类型相同,但设定了选项ExplicitCapture

输入字符串为:1A BB SA1 C

匹配一个数字或一个A到Z的字母,接着是任意单词字符的正则表达式为:(?:\d|[A-Z]\w)

它将产生3次匹配:每1次匹配=1A;每2次匹配=BB;每3次匹配=SA

但是没有组被捕获

(?<name>)

此选项组合括号内模式所匹配的字符,并用尖括号中指定的值为组命名。在正则表达式中,可以使用名称进行反向引用,而不必使用编号。即使不设置ExplicitCapture选项,它也是一个捕获组。这意味着反向引用可以利用组内匹配的字符,或者通过Group类访问

输入字符串为:Characters in Sienfeld included Jerry Seinfeld,Elaine Benes,Cosno Kramer and George Costanza能够匹配它们的姓名,并在一个组llastName中捕获姓的正则表达式为:\b[A-Z][a-z]+(?<lastName>[A-Z][a-z]+)\b

它产生了4次匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza

每一次匹配都对应了一个lastName组:

第1次匹配:lastName group=Seinfeld

第2次匹配:lastName group=Benes

第3次匹配:lastName group=Kramer

第4次匹配:lastName group=Costanza

不管是否设置了选项ExplictCapture,组都将被捕获

(?=)

正声明。声明的右侧必须是括号中指定的模式。此模式不构成最终匹配的一部分

正则表达式\S+(?=.NET)要匹配的输入字符串为:The languages were Java,C#.NET,VB.NET,C,Jscript.NET,Pascal

将产生如下匹配:〕

C#

VB

JScript.

(?!)

负声明。它规定模式不能紧临着声明的右侧。此模式不构成最终匹配的一部分

\d{3}(?![A-Z])要匹配的输入字符串为:123A 456 789111C

将产生如下匹配:

456

789

(?<=)

反向正声明。声明的左侧必须为括号内的指定模式。此模式不构成最终匹配的一部分

正则表达式(?<=New)([A-Z][a-z]+)要匹配的输入字符串为:The following states,New Mexico,West Virginia,Washington, New England

它将产生如下匹配:

Mexico

England

(?<!)

反向正声明。声明的左侧必须不能是括号内的指定模式。此模式不构成最终匹配的一部分

正则表达式(?<!1)\d{2}([A-Z])要匹配的输入字符串如下:123A456F789C111A

它将实现如下匹配:

56F

89C

(?>)

非回溯组。防止Regex引擎回溯并且防止实现一次匹配

假设要匹配所有以“ing”结尾的单词。输入字符串如下:He was very trusing

正则表达式为:.*ing

它将实现一次匹配――单词trusting。“.”匹配任意字符,当然也匹配“ing”。所以,Regex引擎回溯一位并在第2个“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing

它将实现0次匹配。“.”能匹配所有的字符,包括“ing”――不能匹配,从而匹配失败

.     决策字符

注:上面表中列出的字符强迫处理器执行一次if-else决策

.     替换字符

注:以上为常用替换字符,不全

.     转义序列

.     选项标志

参考:http://www.cnblogs.com/gkl0818/archive/2009/02/12/1389521.html

SQL 中的正则函数的更多相关文章

  1. SQL中Round(),Floor(),Ceiling()函数的浅析

    项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循 ...

  2. 关于sql中in 和 exists 的效率问题,in真的效率低吗

    原文: http://www.cnblogs.com/AdamLee/p/5054674.html 在网上看到很多关于sql中使用in效率低的问题,于是自己做了测试来验证是否是众人说的那样. 群众: ...

  3. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...

  4. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  5. hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化

    hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...

  6. C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

      C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度.不然获取到的结果总是只有第一字符.本人就是由于这个原因,折腾了很久.在此记录一下,供大家以后参考! 例如: ...

  7. sql中case when语句的使用-来自网摘文章

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. SQL中inner join、outer join和cross join的区别

    对于SQL中inner join.outer join和cross join的区别简介:现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同 ...

  9. SQL中对于两个不同的表中的属性取差集except运算

    SQL中对两个集合取差集运算,使用except关键字,语法格式如下: SELECT column_name(s) FROM table_name1 EXCEPT SELECT column_name( ...

随机推荐

  1. 原创——Nginx基础

    Nginx基础 一.Nginx概述: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx ...

  2. LeetCode--142--环形链表II(python)

    给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...

  3. mysql WHERE语句 语法

    mysql WHERE语句 语法 作用:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句.珠海大理石平尺 语法:SELECT 列名称 FROM 表名称 WHERE 列 运算 ...

  4. Java——容器(List)

    [List接口]  

  5. R which

    setwd("E:/courses/molecular biology/homework1st") genes <- read.table('genes.txt',sep = ...

  6. Python_021(内置方法讲解二)

    一.内置方法二 1.__del__方法: a:构造方法:创建一个空间,  析构方法;释放一个空间; b:触发del的情况:Python解释器的垃圾回收机制,和遇到 del 对象名 c:析构方法的思想: ...

  7. Python_019(六星级别之反射方法)

    1.反射 1)神赐给你的内置函数 : a: getattr(命名空间,'函数名') == 命名空间.属性名; 这里的命名空间指的是对象或者类; b: getattr四个应用场景: 1)类名.名字 &l ...

  8. 【PowerOJ1746&网络流24题】航空路线问题(费用流)

    题意: 思路: [问题分析] 求最长两条不相交路径,用最大费用最大流解决. [建模方法] 把第i个城市拆分成两个顶点<i.a>,<i.b>. 1.对于每个城市i,连接(< ...

  9. 通过运行窗口输入命令方式,打开Internet窗口

    WIN + R 按键, 运行窗口出来后,我们输入‘inetcpl.cpl“,然后按确定. 弹出Interent属性窗口.

  10. HPU personal training

    K - Two Contests 原题链接:https://agc040.contest.atcoder.jp/tasks/agc040_b?lang=en 题目大意: 给一个区间集合,将这些区间分为 ...