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

Oracle正则表达式函数

函数语法

REGEXP_LIKEREGEXP_LIKE(source_str,pattern,[match_parameter])

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

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

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

REGEXP_COUNTREGEXP_COUNT(source_str,pattern,[position],[match_parameter])

注:[]为可选项

参数含义

source_str输入的字符串,可以是列名或者字符串常量、变量。

pattern正则表达式。

match_parameter匹配选项。取值范围: i:大小写不敏感; c:大小写敏感;

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

m:多行模式,开启则将^和$作为源串中的任何地方的任何行的分别的开始和结束,而不是仅在整个源串的开始或结束。如果省略此参数,则将源字符串视为单行。

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

position标识从第几个字符开始正则表达式匹配,默认为1

occurrence标识第几个匹配组。默认为1

replace_str替换的字符串,可以使用捕获组(\n调用,n为第n个捕获组)

return_option仅regexp_instr适用,0:默认值,返回pattern第一个字符出现的位置,1:pattern结束后下一个字符起始位置

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

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

regexp_replace :正则方式的替换,其中replace_str可以使用捕获组,\n形式调用

regexp_count :11g开始新增的函数,可以统计一个字符串内出现pattern的次数

字符类

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:]可以匹配所有的空字符

[:blank:]可以匹配空格或tab键

[: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

oracle 汉字正则表达式,在Oracle中使用正则表达式相关推荐

  1. mysql触发器可以使用正则表达式_SQL 正则表达式及mybatis中使用正则表达式

    这篇文章主要介绍了SQL 正则表达式及mybatis中使用正则表达式的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 mysql 提供的模式匹配的其他类型是使用扩展正则表达式. 当你对这 ...

  2. python正则表达式入门_Python中的正则表达式教程

    本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...

  3. qq号的正则表达式html,JavaScript中的正则表达式使用及验证qq号码的正则

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

  4. python正则表达式空格_python中的正则表达式的使用

    一.正则表达式简介 正则表达式:又称正规表示式.正规表示法.正规表达式.规则表示式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或者是RE),是计算 ...

  5. oracle 汉字替换空格,oracle中replace替换回车换行空格的方法详解

    本篇文章是对oracle中去掉回车换行空格的解决方法进行了详细的分析介绍,需要的朋友参考下 去除换行 update zhzl_address t set t.add_administration_nu ...

  6. java正则表达式验证_Java中的正则表达式电话号码验证

    java正则表达式验证 Validating a phone number using regular expression is tricky because the phone number ca ...

  7. php正则表达式. 123,preg_match中的正则表达式和模式 – PHP适合123-23-345

    搜索热词 我不是很擅长找到正确的正则表达式的自动化,生成不同的表达式,但是当这涉及 PHP的脚本时,它变得很麻烦.我无法证明自己能够在preg_match中编写一个"适合"表达式的 ...

  8. oracle汉字默认排序,oracle对汉字排序

    汉字排序须综合考虑数据库字符集.NLS_SORT. 查看版本信息: select * from v$version; 查看数据库字符集: SELECT userenv('language') FROM ...

  9. 【JavaSE】java中的正则表达式(从0到1学会正则表达式)

    文章目录 前言 一.正则表达式的三个常用类 1.Pattern类 2.Matcher类 3.PatternSyntaxException类 二.正则表达式的底层实现 1.Matcher.find()和 ...

  10. linux正则表达式的使用方法,Linux中基本正则表达式

    正则表达式 的 Linux中基本正则表达式 字符匹配: .  :匹配任意单个字符 [] :匹配指定范围内的任意单个字符: [^]:匹配制定范围外任意单个字符 [:digit:] lower upper ...

最新文章

  1. 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践
  2. ORA-12518,TNS:listener could not hand off client connection
  3. linux下创建用户及组
  4. SharePoint工作流解决方案QuickFlow系列(2)--Task
  5. 关于如何使用反编译器,获取源码清单
  6. Appium环境搭建python篇(mac系统)
  7. java面试题36 已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( )
  8. ipad如何连接电脑_电脑无法连接外网远程调试,一文教你如何用手机让台式机连接外网...
  9. 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
  10. java两矩阵相加(二维矩阵重要细节解析)
  11. mysql上传spc数据慢_SPC实施篇:控制图数据处理这8个细节要注意!
  12. html 隐藏广告代码大全,JS广告代码_JS广告代码大全_js特效代码_js特效代码大全 - 懒人建站...
  13. ITSM (IT Service Management,IT服务管理 )
  14. Python学习笔记(15)-Python常用模块总结
  15. 什么是云计算,云计算的三种类型
  16. Ubuntu下载、配置、运行Anaconda
  17. Python:实现binomial distribution二项分布算法(附完整源码)
  18. 区块链的未来:“2020年起3-5年:国内区块链大规模商业应用将全面落地开花”
  19. 店盈通:你肯定不知道,拼多多如何打造基础销量
  20. 内容都是XXXXX 如何把他们批量的插入表中

热门文章

  1. 【AirSim】脚本控制无人机
  2. 【Appium+python】特殊键盘事件处理-国产机型的搜索处理。
  3. 腾讯员工似乎不喜欢mateXS,刚到手就在闲鱼抛售
  4. python元组和列表都支持的方法_python列表方法和元组
  5. 「需求广场」需求词更新明细(十四)
  6. 关于soapUI工具调试webService接口简单示例
  7. 【计算机毕业设计】在线答疑系统
  8. 信任中心2.0重装上阵,安全触手可及
  9. 前端和后端交互的一些原规范问题
  10. Minecraft 1.19.2 Forge模组开发 06.建筑生成