Oracle正则表达式
周末学习正则表达式,将搜集的资料整理总结了一下,希望能对大家有用。
正则表达式具有强大、便捷、高效的文本处理功能。能够添加、删除、分析、叠加、插入和修整各种类型的文本和数据。Oracle从10g开始支持正则表达式。
下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问题。
1.
REGEXP_SUBSTR
REGEXP_SUBSTR 函数使用正则表达式来指定返回串的起点和终点,返回与source_string 字符集中的VARCHAR2 或CLOB 数据相同的字符串。
语法:
--1.REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串
REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]])
注:
srcstr
源字符串 pattern
正则表达式样式 position
开始匹配字符位置 occurrence
匹配出现次数 match_option
匹配选项(区分大小写) 1.1从字符串中截取子字符串
SELECT regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]+') FROM dual;
Output: 1PSN
[[:alnum:]]+ 表示匹配1个或者多个字母或数字字符。 SELECT regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]+', 1, 2) FROM dual;
Output: 231
与上面一个例子相比,多了两个参数
1
表示从源字符串的第一个字符开始查找匹配 2
表示第2次匹配到的字符串(默认值是"1",如上例) select regexp_substr('@@/231_3253/ABc','@*[[:alnum:]]+') from dual;
Output: 231
@* 表示匹配0个或者多个@ [[:alnum:]]+ 表示匹配1个或者多个字母或数字字符 注意:需要注意"+"和"*"的区别
select regexp_substr('1@/231_3253/ABc','@+[[:alnum:]]*') from dual;
Output: @
@+ 表示匹配1个或者多个@ [[:alnum:]]* 表示匹配0个或者多个字母或数字字符 select regexp_substr('1@/231_3253/ABc','@+[[:alnum:]]+') from dual;
Output: Null
@+ 表示匹配1个或者多个@ [[:alnum:]]+ 表示匹配1个或者多个字母或数字字符 select regexp_substr('@1PSN/231_3253/ABc125','[[:digit:]] +$') from dual;
Output: 125
[[:digit:]]+$ 表示匹配1个或者多个数字结尾的字符 select regexp_substr('@1PSN/231_3253/ABc','[^[:digit:]]+$ ') from dual;
Output: /ABc
[^[:digit:]]+$ 表示匹配1个或者多个不是数字结尾的字符 select regexp_substr('Tom_Kyte@oracle.com','[^@]+') from dual;
Output: Tom_Kyte
[^@]+ 表示匹配1个或者多个不是"@"的字符 select regexp_substr('1PSN/231_3253/ABc','[[:alnum:]]*',1 ,2)
from dual;
Output: Null
[[:alnum:]]* 表示匹配0个或者多个字母或者数字字符 注:因为是匹配0个或者多个,所以这里第2次匹配的是"/"(匹配了0次),而不是"231",所以结果是"Null" 1.2匹配重复出现
查找连续2个小写字母
SELECT regexp_substr('Republicc Of Africaa', '([a-z])\1', 1, 1, 'i') FROM dual; Output: cc ([a-z])
表示小写字母a-z \1
表示匹配前面的字符的连续次数 1
表示从源字符串的第1个字符开始匹配 1
第1次出现符合匹配结果的字符 i
表示区分大小写 1.3其他一些匹配样式
查找网页地址信息
SELECT regexp_substr('Go to http://www.oracle.com/products and click on database', 'http://([[:alnum:]]+\.?){3,4}/?') RESULT FROM dual Output: http://www.oracle.com 其中:
http://
表示匹配字符串"http://" ([[:alnum:]]+\.?) 表示匹配1次或者多次字母或数字字符,紧跟0次或1次逗号符 {3,4}
表示匹配前面的字符最少3次,最多4次 /?
表示匹配一个反斜杠字符0次或者1次 提取csv字符串中的第三个值
SELECT regexp_substr('1101,Yokohama,Japan,1.5.105', '[^,]+', 1, 3) AS output FROM dual; Output: Japan 其中:
[^,]+
表示匹配1个或者多个不是逗号的字符 1
表示从源字符串的第一个字符开始查找匹配 3
表示第3次匹配到的字符串 注:这个通常用来实现字符串的列传行
--字符串的列传行
SELECT regexp_substr('1101,Yokohama,Japan,1.5.105', '[^,]+', 1, LEVEL) AS output
FROM dual
CONNECT BY LEVEL 正则表达式返回搜索模式的起点和终点。REGEXP_INSTR 的语法如下所示。REGEXP_INSTR 返回一个整数,指出搜索模式的开始或结束的位置,如果没有发现匹配的值,则返回0。
语法:
--2.REGEXP_INSTR与INSTR函数相同,返回字符串位置
REGEXP_INSTR(srcstr, pattern [, position [, occurrence [, return_option [,match_option]]]]) 与REGEXP_SUBSTR一样,它也有变量pattern、position(开始位置)、occurrence 和match_parameter;这里主要介绍一下新参数return_option 的作用,它允许用户告诉Oracle,模式出现的时候,要返回什么内容。
具体如下面的例子所示:
--如果return_option 为0 则,Oracle 返回第一个字符出现的位置。这是默认值,与INSTR的作用相同
SELECT regexp_instr('abc1def',
'[[:digit:]]') output
FROM dual;
Output: 4
--如果return_option 为1,则Oracle 返回跟在所搜索字符出现以后下一个字符的位置。
--例如,下面的查询返回了在串中发现的第一个数字后的位置:
SELECT regexp_instr('abc1def',
'[[:digit:]]',1,1,1) output
FROM dual;
Output: 5 --------原文网址: http://www.itpub.net/thread-1345477-1-1.html
发表评论
-
常见的字符串和数的转换(C)
2012-07-06 09:51 7341. 字符串转换为数字:头文件 #include at ... -
数据验证--正则表达式验证RegularExpressionValidator
2012-07-06 09:45 645RegularExpressionValidator控件用 ... -
DevExpress皮肤引用的办法
2012-07-06 09:30 946procedure TFrmMain.SetSkin(sk ... -
JS操作iframe里的dom,js iframe
2012-07-05 20:45 647直接赋值如下代码测试即可明白: 1.html: ... -
RSS Reader实例开发之使用Service组件
2012-07-03 13:43 664到目前为止,我们已经实现了RSS Reader的基本功能, ... -
Flex事件机制二
2012-07-02 10:36 665三: dispatcherEvent EventDispa ... -
as与js相互通信(flex中调用js函数)
2012-07-02 10:36 658Flex中As调用Js的方法是: 1、导入包 (i ... -
flex 实现的多点切割+mask蒙版+自动识别非透明区域+自适应图片大小
2012-07-02 10:36 706先上代码: width="650" ... -
flex的数据验证!
2012-07-02 10:36 57219.3.2 如何使用数 ... -
flex使用翻译串流程
2012-07-01 00:13 658== 翻译串流程 == 如果在本地进行翻译串编译, ... -
[ActionScript3.0][My flex]读书笔记三之 模块化编程
2012-07-01 00:13 5821.加载mxml模块 第一步: 新建mxml模块:Data ... -
flex与C# Socket通信
2012-07-01 00:13 583Socket 通信没什么好说,一个服务端,多个客户端,很容 ... -
Flex组件自动获取输入焦点
2012-07-01 00:12 616浏览器加载swf后,Flex组件自动获取输入焦点。 1.在 ... -
Flex中使用HttpService和WebService方式通信
2012-07-01 00:12 834HttpService、WebService、Remote ...
相关推荐
Oracle正则表达式详解,用法+实例。
ORACLE 正则表达式的使用(REGEXP_LIKE REGEXP_INSTR REGEXP_SUBSTR REGEXP_REPLACE)
Oracle正则表达式函数全面解析
oracle正则表达式总结,包括语法与实例
Oracle正则表达式参考手册 ,《Oracle Regular Expressions Pocket Reference 》 Oracle Regular Expressions Pocket Reference is part tutorial and part quick-reference.
Oracle 正则表达式参考手册 regexp_instr regexp_substr regexp_repalce regexp_like
chm格式的Oracle正则表达式参考手册,英文版的,不过英文不是很难! ......解压密码 www.infoxa.com
oracle 数据库中 正则表达式 详细讲解 ,保证看了之后对正则表达式有一个深入的理解。对于不会用正则表达式的朋友非常有帮助。
oracle 正则表达式,主要是正则表达式的主要函数和一些匹配字符的说明
各种编程语言中都有正则表达式,来处理一些特殊的操作!数据库oracle中也有自己的正则表达式
position :起始位置,从第几个字符开始正则表达式匹配(默认为1) occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大小写进行检索;’c’区分大小写进行检索。默认为’c’) SELECT REGEXP_...
Oracle正则表达式
Oracle中的正则表达式 Oracle中的正则表达式 Oracle中的正则表达式
ORACLE 10G 中经常会使用到的正则表达式的说明及例子
正则表达式应用广泛,在数据库中也有很大的应用空间,该篇文档讲述正则表达式在数据库中的应用。
Oracle正则表达式的应用 ,应该是蛮有用的,供大家分享!
Oracle正则表达式与Oracle正则表达式函数
oracle正则表达式是开发中 简洁代码的利器。