ORACLE SQL总结八:正则表达式

1、正则表达式语法,正则表达式是在10g才添加进来的,其匹配字符、量词字符、匹配选项、相关函数如下:

匹配字符内容:

功能

字符

= = 匹配字符族,如:[=a=] 可匹配字符a、â、ã、ä、å等
. 匹配任何字符(除了NULL)
[:alnum:] 匹配任何字母和数字
[:alpha:] 匹配任何字母
[:blank:] 匹配空格
[:cntrl:] 匹配任何控制字符(在ASCII码表中不可打印的字符,如ESC键)
[:digit:] 任何数字
[:graph:] 任何 标点符号、大小写字母以及数字
[:lower:] 任何小写字母
[:upper:] 任何大写字母
[:print:] 任何可打印的字符
[:punct:] 任何标点符号,如,.+-=等
[:space:] 任何空白字符,如回车、换行、制表等
[:xdigit:] 任何十六进制数字,即0-9A-F

 

匹配字符位置和条件:

字符

功能

^ 标记行的开始
$ 标记行的结束
| 分隔符
() 子表达式,可作为量词或向后引用的前段
[char]和[^char] 匹配括号中的任何字符,[^char]表示除开括号中字符后的任何字符

 

匹配字符数量:

字符

功能

* 匹配0次或多次
? 匹配0次或1次
+ 匹配1次或多次
{m} 匹配m次
{m,} 匹配至少m次
{m,n} 匹配至少m次,最多n次
\n 引用第n个匹配

 

匹配选项:

字符

功能

c 匹配时区分大小写
i 匹配时不区分大小写
m 源字符串为多行匹配
n .可匹配任何换行符
   
   
   
   
   

 

函数:
REGEXP_LIKE 是LIKE语句的正则表达式版本
语法:REGEXP_LIKE(源字符串, 匹配表达式[,匹配选项])
REGEXP_INSTR 返回源字符串中首次匹配正则表达式的起始位置
语法:REGEXP_INSTR(srcstr, pattern [, position [, occurrence[, return_option [, match_option]]]])
      srcstr:源字符串
      pattern:正则表达式
      position:搜索开始位置
      occurrence:返回第几个匹配项
      return_option:返回选项,0表示开始位置,1表示返回匹配的结束位置
      match_option:匹配选项
REGEXP_SUBSTR 返回源串中匹配正则表达式的子字符串
语法:SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]])
      srcstr:源字符串
      pattern:正则表达式
      position:搜索的开始位置
      occurrence:返回第几个匹配的字符串
      match_option:匹配选项
REGEXP_REPLACE 用执行字符串替换源文本中与正则表达式匹配的字符串
语法:REGEXP_REPLACE(srcstr, pattern [,replacestr [, position[, occurrence [, match_option]]]])
      srcstr:源字符串
      pattern:正则表达式
      replacestr:新的字符串
      position:搜索起始位置
      occurrence:第几个匹配项
      match_option:匹配选项

例题说明:

Evaluate the following expression using meta. character for regular expression:
'[^Ale|ax.r$]'
Which two matches would be returned by this expression? (Choose two.)
A. Alex
B. Alax
C. Alxer
D. Alaxendar
E. Alexender
Answer: DE

'[^Ale|ax.r$]'中^表示只匹配不在集合{'A','l','e','|','a','x','.','r','$'}中的字符, 此处的'|'、'.'、'$'只是表示普通的字符,而非匹配符

注意重复性表达是是可以代表前面多种可能的,比如har+d可以匹配下面几种情况

harhardisk     +匹配红色的har,而下一个字母刚好是d,所以就匹配是

har  har disk

har  +   d

也可以匹配harardisk

har ar disk

har + d

当然了,还可以匹配harrdisk

har r disk

har + d

你可能感兴趣的:(ORACLE SQL总结八:正则表达式)