《oracle正则表达式》摘抄+自理

select * from t_test_regexp;

A     B

1     AAA
2     bbb
3     !!!
4     !!!
5     吴雁渡
6     12345
7     123AAbb存储@#%!!@#445BBC

1.REGEXP_LIKE:类似于 LIKE 运算符,但执行正则表达式匹配而不是简单的模式匹配

select a.*,a.rowid from t_test_regexp a
where regexp_like(a.b,'\d')   (12345,123AAbb存储@#%!!@#445BBC)//

 常用例子:查询以某些字符串开头的数据

select * from scott.emp a
where REGEXP_LIKE(A.job,'^(CL|PRE)')   --查询job字段中值以CL或PRE开头的数据

PS: 对用法不熟的话这里容易出个错误,把^(CL|PRE)写成了^[CL|PRE],就是括号用错,后者匹配的是‘字符’不是’字符串‘,即匹配的是C,L,|,P,R,E这几个字符开头的记录


2.REGEXP_INSTR:在给定字符串中搜索某个正则表达式模式,并返回匹配项的位置。

select a.b,REGEXP_INSTR(a.b,'\d') from t_test_regexp a;(0,0,0,0,0,1,1)

select a.b,REGEXP_INSTR(a.b,'\d',7) from t_test_regexp a;(0,0,0,0,0,0,17)
3.REGEXP_REPLACE:搜索某个正则表达式模式并使用替换字符串替换它

select a.b,REGEXP_REPLACE(a.b,'\d','靠') from t_test_regexp a
where a.a=7                                                                           (靠靠靠AAbb存储@#%!!@#靠靠靠BBC)
4.REGEXP_SUBSTR:在给定字符串中搜索某个正则表达式模式并返回匹配的子字符串

select a.b,REGEXP_SUBSTR(a.b,'\d{2}',1,2) from t_test_regexp a
where a.a=7               (44)

5.regexp_count:统计字符串中符合指定模式的出现次数

SELECT regexp_count('as3ld5fg7jas','\d') FROM dual    --出现数字的次数

----------------------------------字符释义-------------------------------------------

^:匹配一个字符串的开始。如果与“m” 的match_parameter一起使用,则匹配表达式中任何位置的行的开头。
$:匹配字符串的结尾。如果与“m” 的match_parameter一起使用,则匹配表达式中任何位置的行的末尾。
*:匹配零个或多个。
+:匹配一个或多个出现。
?:匹配零次或一次出现。
. :匹配任何字符,除了空。
|:用“OR”来指定多个选项。
[]:用于指定一个匹配列表,您尝试匹配列表中的任何一个字符。
[^]:用于指定一个不匹配的列表,您尝试匹配除列表中的字符以外的任何字符。
():用于将表达式分组为一个子表达式。
{M}:匹配m次。
{M,}:至少匹配m次。
{M,N}:至少匹配m次,但不多于n次。
\ n:n是1到9之间的数字。在遇到\ n之前匹配在()内找到的第n个子表达式。
[..]:匹配一个可以多于一个字符的整理元素。
[:]:匹配字符类。
[==]:匹配等价类。
\ d:匹配一个数字字符。
\ D:匹配一个非数字字符。
\ w:匹配包括下划线的任何单词字符。
\ W:匹配任何非单词字符。
\ s:匹配任何空白字符,包括空格,制表符,换页符等等。
\ S:匹配任何非空白字符。
\A:在换行符之前匹配字符串的开头或匹配字符串的末尾。
\Z:匹配字符串的末尾。
*?:匹配前面的模式零次或多次发生。
+?:匹配前面的模式一个或多个事件。
??:匹配前面的模式零次或一次出现。
{N}?:匹配前面的模式n次。
{N,}?:匹配前面的模式至少n次。
{N,M}?:匹配前面的模式至少n次,但不超过m次。

 

posted @ 2019-09-29 16:41  海月孤影  阅读(176)  评论(1编辑  收藏  举报