前言
正则表达式已在很多软件中得到广泛的利用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。
本文主要介绍了关于oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍。
Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。
regexp_like
该函数只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配
//查询所有包括小写字母或数字的记录。
select * from fzq where regexp_like(value,’^([a-z]+|[0⑼]+)$’);
regexp_substr
该函数和 substr 类似,用于拾取合符正则表达式描写的字符子串,该函数的定义以下
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
– String 输入的字符串
– pattern 正则表达式
– position 标识从第几个字符开始正则表达式匹配。(默许为1)
– occurrence 标识第几个匹配组。(默许为1)
– modifier 取值范围:
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩大模式,疏忽正则表达式中的空白字符。
下面是一些实例
–检索中间的数字
SELECT REGEXP_SUBSTR(a,'[0⑼]+’) FROM test_reg_substr WHERE REGEXP_LIKE(a, ‘[0⑼]+’);
–检索中间的数字(从第一个字母开始匹配,找第2个匹配项目)
SELECT NVL(REGEXP_SUBSTR(a,'[0⑼]+’,1, 2), ‘-‘) AS a FROM test_reg_substr
WHERE REGEXP_LIKE(a, ‘[0⑼]+’);
regexp_instr
该函数和 instr 类似,用于标定符合正则表达式的字符子串的开始位置,Oracle数据库中的REGEXP_INSTR函数的语法是
REGEXP_INSTR (source_char, pattern [, position [, occurrence
[, return_option [, match_parameter ] ] ] ] )
– source_char 搜索值的字符表达式
– pattern 正则表达式
– position 可选。搜索在字符串中的开始位置。如果省略,则默许为1,这是字符串中的第一个位置。
– occurrence 可选。它是模式字符串中的第n个匹配位置。如果省略,默许为1。
– return_option 可选 指定Oracle返回的位置,
0那末Oracle将返回出现的第一个字符的位置。这是默许的,
1则Oracle返回字符以后产生的位置。
– match_parameter 取值范围:
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩大模式,疏忽正则表达式中的空白字符。
下面是一些实例
–找到字符串中的第一个”e”字的位置
–返回2
SELECT REGEXP_INSTR (‘hello itmyhome’, ‘e’) FROM dual;
–“1”为开始位置 “2”是搜索第二个匹配的,”0”是return_option
–返回出现的第一个字符位置“c”是辨别大小写 ,所以将返回13
SELECT REGEXP_INSTR (‘my is itMyhome’, ‘m’, 1, 2, 0, ‘c’) FROM dual;
—
SELECT REGEXP_INSTR (‘World filled with love’, ‘with’, 1, 1, 0, ‘i’) FROM dual;
–匹配多个备选
SELECT REGEXP_INSTR (‘Itmyhome’, ‘a|i|o|e|u’) FROM dual;
regexp_replace
该函数和 replace 类似,用于替换符合正则表达式的字符串,Oracle数据库中的REGEXP_REPLACE函数的语法是
REGEXP_REPLACE(source_char, pattern [, replace_string
[, position [, occurrence [, match_parameter ] ] ] ])
– source_char 搜索值的字符表达式
– pattern 正则表达式
– replace_string 可选。匹配的模式将被替换replace_string字符串。
如果省略replace_string参数,将删除所有匹配的模式,并返回结果字符串。
– position 可选。在字符串中的开始位置搜索。如果省略,则默许为1。
– occurrence 它是模式字符串中的第n个匹配位置。如果省略,默许为1。
– match_parameter
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩大模式,疏忽正则表达式中的空白字符。
以下是一些实例
–字符串替换
–luck is my network id
SELECT REGEXP_REPLACE (‘itmyhome is my network id’, ‘^(\S*)’, ‘luck’) FROM dual;
–此示例将所指定的\d数字将以#字符替换
–Result: ‘#, #, and ## are numbers in this example’
SELECT REGEXP_REPLACE (‘2, 5, and 10 are numbers in this example’, ‘\d’, ‘#’) FROM dual;
总结
本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!
本文来源:https://www.yuntue.com/post/152519.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏