Oracle 正则表达式函数学习

正则表达式中的元字符

-n:匹配换行符
-^:匹配字符串的开头位置 如果A是字符串的第一个字符,^A 匹配 A 
-$:匹配字符串的末尾位置 如果B是字符串的最后一个字符,$B 匹配 B
-*:匹配前面的字符0次或多次 ba*rk 可以匹配 brk、bark、baark 等等
-+:匹配前面的字符1次或多次 ba+rk 可以匹配 bark、baark等等,但是不能匹配 brk,也就是说,最少有一次
-?: 匹配前面的字符0次或1次 ba?rk 可以匹配 bark、brk等等,但是不能匹配 baark
-{n}:匹配前面的字符恰好是 n 次,其中 n 是整数 hob{2}it 可以匹配 hobbit
-{n,m}:匹配前面的字符至少是 n 次,最多是 m 次,其中 n,m 都是整数 hob{2,3}it 可以匹配 hobbit 或者 hobbbit
-.:匹配除 null 以外的任意单个字符,hob.it 中的 . 可以是任意的单个字符,如:hobsit,hobbit 等等
-(pattern):括号中 pattern 是一个子正则表达式,匹配指定 pattern 模式的一个子表达式, 如:aaa(x|y) 可以匹配 aaax 或者aaay 
-x|y:匹配“或”, x|y 可以匹配 x 或者 y
-[abc]:可以匹配 abc 中的任何单个字符 hello[abc] 可以匹配 helloa,hellob,helloc
-[a-z]:可以匹配指定范围内的任何单个字符 hell[a-z] 可以匹配 hello 或者 hellz
-[::]:指定一个字符类,可以匹配该类中的任何字符 [:alphanum:] 可以匹配字符 0-9、A-Z、a-z
-[:alpha:]:可以匹配字符 A-Z、a-z
-[:blank:]:可以匹配空格或 tab 键
-[:digit:]:可以匹配数字 0-9
-[:graph:]:可以匹配非空字符
-[:lower:]:可以匹配小写字母 a-z
-[:upper:]:可以匹配大写字母 A-Z
-[:print:]与 [:graph:] 类似,不同之处在于 [:print:] 包括空格字符
-[:punct:]:可以匹配标点符号.,""等等
-[:space:]:可以匹配所有的空字符
-[:xdigit:]:可以匹配十六进制数字 0-9、A-F、a-f

正则表达式中的可选参数

1.示例:REGEXP_LIKE(x,pattern[,match_option])——用于在 x 中查找正则表达式 pattern,该函数还可以提供一个可选的参数 match_option 字符串说明默认的匹配选项
2.match_option 的取值:
    -'c':说明在进行匹配时区分大小写(缺省值)
    -'i':说明在进行匹配时不区分大小写
    -'n':允许使用可以匹配任意字符的操作符
    -'m':将x作为一个包含多行的字符串

Oracle 支持的四个正则表达式函数

REGEXP_LIKE

1.功能:与 LIKE 的功能相似
2.示例:select * from test where regexp_like(mc,'^a{1,3}');

REGEXP_INSTR

1.功能:与 INSTR 的功能相似
2.示例:select regexp_instr(mc,'[[:digit:]]$') from test;

REGEXP_SUBSTR

1.功能:与 SUBSTR 的功能相似
2.示例:select regexp_substr(mc,'[a-z]+') from test; 

REGEXP_REPLACE

1.功能:与 REPLACE 的功能相似
2.示例:select regexp_replace('Joe Smith','( ){2,}', ',') as replace from dual;
查看评论