oracle 汉字正则表达式,在Oracle中使用正则表达式
正则表达式是一种强大的实用的字符串操作工具,可以用一定的字符及其组合逻辑进行灵活、强大的查找、匹配、替换等字符串操作。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中使用正则表达式相关推荐
- mysql触发器可以使用正则表达式_SQL 正则表达式及mybatis中使用正则表达式
这篇文章主要介绍了SQL 正则表达式及mybatis中使用正则表达式的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 mysql 提供的模式匹配的其他类型是使用扩展正则表达式. 当你对这 ...
- python正则表达式入门_Python中的正则表达式教程
本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...
- qq号的正则表达式html,JavaScript中的正则表达式使用及验证qq号码的正则
废话不多说了,直接给大家贴正则表达式代码了. function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. ...
- python正则表达式空格_python中的正则表达式的使用
一.正则表达式简介 正则表达式:又称正规表示式.正规表示法.正规表达式.规则表示式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或者是RE),是计算 ...
- oracle 汉字替换空格,oracle中replace替换回车换行空格的方法详解
本篇文章是对oracle中去掉回车换行空格的解决方法进行了详细的分析介绍,需要的朋友参考下 去除换行 update zhzl_address t set t.add_administration_nu ...
- java正则表达式验证_Java中的正则表达式电话号码验证
java正则表达式验证 Validating a phone number using regular expression is tricky because the phone number ca ...
- php正则表达式. 123,preg_match中的正则表达式和模式 – PHP适合123-23-345
搜索热词 我不是很擅长找到正确的正则表达式的自动化,生成不同的表达式,但是当这涉及 PHP的脚本时,它变得很麻烦.我无法证明自己能够在preg_match中编写一个"适合"表达式的 ...
- oracle汉字默认排序,oracle对汉字排序
汉字排序须综合考虑数据库字符集.NLS_SORT. 查看版本信息: select * from v$version; 查看数据库字符集: SELECT userenv('language') FROM ...
- 【JavaSE】java中的正则表达式(从0到1学会正则表达式)
文章目录 前言 一.正则表达式的三个常用类 1.Pattern类 2.Matcher类 3.PatternSyntaxException类 二.正则表达式的底层实现 1.Matcher.find()和 ...
- linux正则表达式的使用方法,Linux中基本正则表达式
正则表达式 的 Linux中基本正则表达式 字符匹配: . :匹配任意单个字符 [] :匹配指定范围内的任意单个字符: [^]:匹配制定范围外任意单个字符 [:digit:] lower upper ...
最新文章
- 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践
- ORA-12518,TNS:listener could not hand off client connection
- linux下创建用户及组
- SharePoint工作流解决方案QuickFlow系列(2)--Task
- 关于如何使用反编译器,获取源码清单
- Appium环境搭建python篇(mac系统)
- java面试题36 已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( )
- ipad如何连接电脑_电脑无法连接外网远程调试,一文教你如何用手机让台式机连接外网...
- 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
- java两矩阵相加(二维矩阵重要细节解析)
- mysql上传spc数据慢_SPC实施篇:控制图数据处理这8个细节要注意!
- html 隐藏广告代码大全,JS广告代码_JS广告代码大全_js特效代码_js特效代码大全 - 懒人建站...
- ITSM (IT Service Management,IT服务管理 )
- Python学习笔记(15)-Python常用模块总结
- 什么是云计算,云计算的三种类型
- Ubuntu下载、配置、运行Anaconda
- Python:实现binomial distribution二项分布算法(附完整源码)
- 区块链的未来:“2020年起3-5年:国内区块链大规模商业应用将全面落地开花”
- 店盈通:你肯定不知道,拼多多如何打造基础销量
- 内容都是XXXXX 如何把他们批量的插入表中