Oracle 正则表达式函数

来源:互联网 发布:nginx负载均衡做双机 编辑:程序博客网 时间:2024/05/01 01:16
 

正则表达式函数

 

元字符

说明

示例

\

要匹配的字符是一个特殊字符、常量或者后引用。(后引用重复上一次匹配)

\n匹配换行符

\\匹配\

\( 匹配(

\) 匹配)

^

匹配字符串的开头位置

 

$

匹配字符串的末尾

 

*

匹配前面的字符0次或多次

ba*rk可以匹配brk、bark、bark

+

匹配前面的字符1次或多次

ba+rk可以匹配bark、baark

?

匹配前面的字符0次或1次

ba?rk只能匹配brk和bark

{n}

匹配一个字符恰好n次

Hob{2}it可以匹配hobbit

{n,m}

匹配一个字符至少n次,最多m次

Hob(2,3)it只能匹配

Hobbit、hobbbit

.

匹配除null以外的任意单个字符

Hob.it可以匹配hobbit、hobait

(pattern)

匹配指定模式的一个子表达式。可以使用子表达式构成复杂的正则表达式。

Anatom(y|ies)可以匹配anatomy、anatomies

x|y

匹配x或y,其中x和y是一个或多个字符

War|Peace可以匹配war、peace

[abc]

匹配括号中的任意一个字符

[ab]bc可以匹配abc、bbc

[a-z]

匹配指定范围内的任意一个字符

 

[::]

指定一个字符类,可以匹配该类中的任何字符

[:alphanum:]可以匹配字符

0-9、a-z、A-Z

[:alpha:]可以匹配A-Z、a-z

[:blank:]可以匹配空格或tab键

 

\n

这是对前一次匹配命中的一个后引用,其中n是一个正整数

(.)\1可以匹配两个连续相同的字符。

[==]

 

 

[..]

 

 

       正则表达式函数

      

函数

说明

REGEXP_LIKE(x,pattern

[,match_option])

当x匹配pattern时,返回true。可以使用match_option修改默认匹配选项

'c'默认选项,说明在匹配时区分大小写

'i'说明在匹配时不区分大小写

'n'允许使用可以匹配任意字符的操作符

'm'将x作为一个包含多行的字符串

REGEXP_INSTR(x,pattern

[,start

[,occurrence

[,return_option

[,match_option]]]]

在x查找pattern,并返回pattern所在的位置

occurrence 说明应该返回第几次出现

pattern的位置

return_option 若该参数为0,说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后的字符

REGEXP_REPLACE(x,pattern

[,replace_string

[,start

[,occurrence

[,match_option]]]]

 

REGEXP_SUBSTR(x,pattern

[,start

[,occurrence

[,match_option]]]

 

REGEXP_LIKE()

 SELECT customer_id,first_name,last_name,dob

FROM customers

WHERE REGEXP_LIKE(TO_CHAR(DOB,'yyyy'),'^197[0-4]$');

 

 CUSTOMER_ID FIRST_NAME LAST_NAME  DOB

--------------------------------------- ---------- --------

2 Fred       Brown      1970-1-1

      

SELECT customer_id,first_name,last_name,dob

FROM customers

WHERE REGEXP_LIKE(first_name,'^j','i');

 

REGEXP_INSTR()

SELECT REGEXP_INSTR( 'But,soft!What light through youder window breaks?'  ,  'l[[:alpha:]] { 4 } ' ) AS  location

FROM dual;

      

 SELECT REGEXP_INSTR('But,soft!What light through youder window softly breaks?','s[[:alpha:]]{3}',1,2) AS  location

 FROM dual;

      

SELECT REGEXP_INSTR('But,soft!What light through youder window softly breaks?','o',10,2) AS location

FROM dual;

      

REGEXP_REPLACE()

SELECT REGEXP_REPLACE('But,soft!What light through youder window softly breaks?','l[[:alpha:]]{4}','sound') AS  result

FROM dual;

REGEXP_SUBSTR()

SELECT REGEXP_SUBSTR('But,soft!What light through youder window softly breaks?','l[[:alpha:]]{4}') AS  result

FROM dual;