oracle 可以用正则么,在Oracle中使用正则表达式

2546ee378a563c8454444608d73073f7.png

正则表达式是功能强大且实用的字符串操作工具. 您可以使用某些字符及其组合逻辑来执行灵活,强大的搜索,匹配和替换字符串操作. 作为行业的领导者,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

4aa5b22454d44466196809342abaac87.png

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

注意: []是可选的

参数含义

source_str

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

模式

正则表达式.

match_parameter

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

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

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

58398dbbf973016b6d0788dbaa91de3a.png

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,使用正则表达式进行字符选取和定位,更加简单,灵活,强大;

6eb0351eb4850a65a13baa3b3e48d303.png

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

40c2b3d8be1e79d0792f02fd7ae3d4af.png

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值