正则表达式是功能强大且实用的字符串操作工具. 您可以使用某些字符及其组合逻辑来执行灵活,强大的搜索,匹配和替换字符串操作. 作为行业的领导者,Oracle对正则表达式提供了更完整的支持.

函数语法

REGEXP_LIKE

REGEXP_LIKE(source_str,pattern,[match_parameter])

REGEXP_SUBSTR

REGEXP_SUBSTR(source_str,pattern,[position],[occurrence],[match_parameter])

REGEXP_INSTR

REGEXP_INSTR(source_str,pattern,[position],[occurrence],[return_option],[match_parameter])

REGEXP_REPLACE

REGEXP_REPLACE(source_str,pattern,replace_str,[position],[occurrence],[match_parameter])

REGEXP_COUNT

REGEXP_COUNT(source_str,pattern正则表达式怎么使用,[position],[match_parameter])

注意: []是可选的

参数含义

source_str

输入字符串可以是列名或字符串常量或变量.

模式

正则表达式.

match_parameter

匹配选项. 值范围: i: 不区分大小写; c: 区分大小写;

n: 点. 与换行符不匹配;

m: 多行模式,使用^和$作为源字符串中任何行的开头和结尾,而不仅仅是整个源字符串的开头或结尾. 如果省略此参数,则将源字符串视为一行.

x: 扩展模式,忽略正则表达式中的空格字符.

位置

确定正则表达式匹配项中的前几个字符,默认值为1

发生

确定匹配组的数量. 默认值为1

replace_str

已替换的字符串,可以使用捕获组(\ ncall,n是第n个捕获组)

return_option

仅适用于regexp_instr正则表达式怎么使用,0: 默认值,返回图案第一个字符出现的位置,1: 图案结束后下一个字符的起始位置

regexp_like: 只能作为条件表达式放置在where后面,类似于like,但是使用正则表达式进行匹配;

regexp_substr和regexp_instr: 分别对应于Oracle的substr和instr,使用正则表达式进行字符选取和定位,更加简单,灵活,强大;

regexp_replace: 常规替换,其中replace_str可以使用捕获组,\ n表单调用

regexp_count: 自11g起新添加的函数,可以计算模式在字符串中出现的次数

字符类

Oracle不使用\ d,\ w,\ s和其他形式来表示字符类,而是采用以下POSIX字符类

[::]指定可以与该类中的任何字符匹配的字符类

[: alpha: ]可以匹配字符A-Z,a-z

[: digit: ]可以匹配数字0-9

[: alphanum: ]可以匹配字符0-9,A-Z,a-z

[: lower: ]可以匹配小写字母a-z

[: upper: ]可以匹配大写字母A-Z

[: space: ]可以匹配所有空字符

[: 空白: ]可以匹配空格或制表符

[: graph: ]可以匹配非空字符

[: print: ]与[: graph: ]相似,除了[: print: ]包含空格字符

[: punct: ]可以匹配标点符号,“”等.

[: xdigit: ]可以匹配十六进制数字0-9,A-F,a-f

应用示例:

regexp_substr

SELECT REGEXP_SUBSTR('http://www.abc_123.com/11/1.html?AD_SOURE=M2017-12-99-11-218','M201[5-9](-[0-9]+){3,4}') AD_SOURE

FROM DUAL;

SELECT REGEXP_SUBSTR('http://www.abc_123.com/11/1.html?AD_SOURE=M2017-12-99-11-218','M201[5-9](-[0-9]+){3,4}','1','1','i') AD_SOURE

FROM DUAL;

SELECT REGEXP_SUBSTR('http://www.abc_123.com/11/1.html?AD_SOURE=m2017-12-99-11-218','M201[5-9](-[[:digit:]]+){3,4}','1','1','i') AD_SOURE

FROM DUAL;

-----

M2017-12-99-11-218

M2017-12-99-11-218

m2017-12-99-11-218

regexp_replace

SELECT REGEXP_REPLACE('13800054321','([[:digit:]]{3})([[:digit:]]{5})([[:digit:]]{3})','\1*****\3') 隐藏手机号

FROM DUAL;

-------

138*****321

SELECT REGEXP_REPLACE('http://www.abc_123.com/11/1.html?AD_SOURE=M2017-12-99-11',

'http://([[:alnum:]_\.]+)/.*',

'\1')

FROM DUAL;

-------

www.abc_123.com

SELECT REGEXP_REPLACE('正序:aa-bb-cc', '正序:(.+)-(.+)-(.+)', '逆序:\3-\2-\1') FROM DUAL;

-------

逆序:cc-bb-aa

请尊重作者的工作,转载时请注明出处: Notes-Qianrong的博客»在Oracle中使用正则表达式

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/tongxinshuyu/article-247789-1.html

oracle 可以用正则么,在Oracle中使用正则表达式相关推荐

  1. mysql 正则 java 区别_MySQL中的正则表达式

    MySQL中允许使用正则表达式定义字符串的搜索条件,性能比like匹配查询还高 MySQL中的正则表达式可以对整数类型或者字符类型检索 使用REGEXP关键字表示正则匹配,默认忽略大小写,如果区分大小 ...

  2. html js脚本限制 正则,简单谈谈JS中的正则表达式

    1.正则表达式包括两部分 ①定义正则表达式的规则: ②正则表达式的模式(i/g/m): 2.声明正则表达式 ① 字面量声明: var reg = /表达式规则/表达式模式: eg:var reg = ...

  3. php正则网络图片格式,php中通过正则表达式下载内容中的远程图片的函数代码

    这段程序其实是属于"小偷程序"的重要部分. 这一段程序只是下载远程图片的那一段而已,程序写的比较简单,大多部分都做了注释. if (preg_match_all("/ht ...

  4. js正则贪婪模式_javascript中的正则表达式的贪婪模式和非贪婪模式讲解

    1.贪婪模式: 根据匹配字符串以及表达式尽可能多的进行匹配,成为贪婪匹配模式 例如:/a\d+/ 即可以匹配首字母为a的之后的许多数字,这个不进行限制 或者另外一种方法/a\d{2,}/也可以实现同样 ...

  5. php正则判断qq,JavaScript中的正则表达式使用及验证qq号码的正则

    废话不多说了,直接给大家贴正则表达式代码了. function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. ...

  6. oracle 正则表达式拆分字符串,oracle中通过正则表达式函数处理逗号分隔的字段...

    这个题目的确不大好写,其实际含义基于一个场景: 比如在oracle的某张表中,有两个字段 A1          B1 1         A,B,C,D, 2         E,F 假如现在的需求 ...

  7. oracle 汉字正则表达式,在Oracle中使用正则表达式

    正则表达式是一种强大的实用的字符串操作工具,可以用一定的字符及其组合逻辑进行灵活.强大的查找.匹配.替换等字符串操作.Oracle作为数据库行业执牛耳者,对正则表达式支持比较完善. Oracle正则表 ...

  8. ESX上ORACLE 10.2RAC(4.在REHAT4.7中安装ORACLE RAC)

    四. 安装CRS软件 上传cluster软件到rac1,rac2的/home/oracle目录下 [root@rac1 ~]# cd /home/oracle [root@rac1 oracle]# ...

  9. oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...

    我已经建立了一个简单的Oracle外部表测试,我(与DBA和Unix管理员一起)无法工作. 以下内容基于Oracle的External Tables Concepts.我们使用的数据库是11g. 这是 ...

最新文章

  1. java字典写实例,基于JAVA的新华字典接口调用代码实例
  2. DataTable.DataRow的复制
  3. 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
  4. 如何在Golang中返回错误?
  5. 前端学习(1575):复习todoMVC
  6. Python刷题-7
  7. UESTC 1143 数据传输 网络流 最大流 Dinic
  8. mysql重启.....
  9. JSR-303 数据校验学习
  10. ribbon基于接口配置超时_Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
  11. sed学习[参考转载]
  12. 会话推荐和 序列推荐
  13. 【ArcGIS小技巧视频教程】(3):五分钟搞定地图矢量化
  14. 【Serenity BDD】Serenity 2.2.0 版本变动说明及相应的配置变动
  15. 电脑鼠标右键失效linux,鼠标右键失灵,教你win7电脑鼠标右键失灵的应对办法
  16. Post接口测试示例
  17. 移远 EC200S 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程
  18. linux识别不了喇叭,Ubuntu扬声器无声的解决方法
  19. ElasticSearch 全文搜索引擎
  20. 计算机理论知识论文,理论知识:计算机科学与技术硕士毕业论文写作方法

热门文章

  1. 【JavaScript】for循环小练习
  2. 老年机能玩的java游戏_情怀满满!教你如何用安卓机玩JAVA老游戏
  3. TP5设置请求header信息
  4. 漂亮动画效果的Dialog--NiftyDialogEffects
  5. 酷我音乐盒2015 v8.0.1.4 系统封装专用版
  6. 【笔记整理】通信原理第八章复习——多路复用和伪随机序列
  7. D3 二维图表的绘制系列(一)介绍
  8. 幼教行业-龙头也摸不到路子
  9. Render Hell —— 史上最通俗易懂的GPU入门教程(二)
  10. 关键字分类及背后意图分析