日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle正则表达式的用法

發布時間:2025/3/15 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle正则表达式的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

l????????方括號表達示

方括號表達式

描述

[[:alnum:]]

字母和數字混合的字符

[[:alpha:]]

字母字符

[[:cntrl:]]

控制字符

[[:digit:]]

數字字符

[[:graph:]]

圖像字符

[[:lower:]]

小寫字母字符

[[:print:]]

打印字符

[[:punct:]]

標點符號字符

[[:space:]]

空格字符

[[:upper:]]

大寫字母字符

[[:xdigit:]]

十六進制數字字符

?

l????????元字符

元字符

描述

*

如果有前面字符串的0次以上出現時匹配

+

如果有前面字符串的1次以上出現時匹配

{m}

m是整數。它文本中找出給定子表達式的恰好m次出現

{n}?

前面的字符串只出現一次時匹配

{m,}

M是整數。它在文本中找出給定子表達示的至少m次出現

{n,}?

匹配前面的字符串至少n

{m,n}

Mn是整數。它在文本中找出給定子表達示的mn次出現

{n,m}

匹配前面的字符串至少到n次,但不多于m

c

查詢操作區分大小寫

i

查詢操作不區分大水寫

m

多行字符串上的查詢,在源字符串包含多行時,該查詢允許用(^)模式匹配字符串的開始

n

通常匹配單個字符,也可以匹配新行

x

需要忽略正則表達示中的空格字符時,使用參數‘X

\A

匹配字符串首,而不是行首,因而多行字符串不能匹配每一行

\d

匹配任意數字字符

\D

匹配任意非數字字符

\s

匹配任意空格字符

\S

匹配任意非空格字符

\w

匹配任意字符和數字。該字符和[:alnum:]之間的不同是\w包括下劃線字符

\W

匹配任意非空字符串

*

通配符。找出在文本中包含0或多次給定子表達式出現的記錄

+

找出在文本中包含1或多次給定子表達式出現的記錄

找出在文本中包含0次或1次給定子表達示出現的記錄

.

匹配文本中的任意字符

?^

錨。如果該字符后的表達式出現在行首,則匹配成功

$

錨。如果該字符后的表達式出現在行首,則匹配成功

|

分隔符,使用方法和OR相同

(….)

分組子表達式

?

l????????正則表達式運算符和函數

?

a)?????REGEXP_SUBSTR

REGEXP_SUBSTR為指定字符串的一部分與正則表達式建立匹配。語法如下:

REGEXP_SUBSTR(source_string,

pattern,

start_position,

occurrence,

match_parameter)

其中source_string是必須的。可以是帶引號的字符串或者變量。Pattern是用單引號引用的與正則表達式。Start_position指定了在字符串中的準確位置,默認值為1。Occurrence是一個選項,指定在源字符串匹配過程中相對其他字符串,哪個字符串應該匹配。最后,match_parameter也是一個選項,指定在匹配時是否區分大水寫。

示例1:

SQL> select regexp_substr('The zip code 80831 is for falcon, co','[[:digit:]]{5}' ) REGEXP_SUBSTR from dual;

?

REGEXP_SUBSTR

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

80831

?

示例2:

SQL> select regexp_substr('The zip code 80831 is for falcon, co', '[[:alpha:]]{3,}', 1, 3) REGEXP_SUBSTR from dual;

?

REGEXP_SUBSTR

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

code

?

示例3

?

SQL> select regexp_substr('comments or questions - email feedback@plsqlbook.com', '[[:alnum:]](([_\.\-\+]?[[:alnum:]]+)*)@' ||

?2????????'([[:alnum:]]+)(([\.-]?[[:alnum:]]+)*)\.([[:alpha:]]{2,})') REGEXP_SUBSTR

?3???from dual;

?

REGEXP_SUBSTR

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

feedback@plsqlbook.com

?

?

b)?????REGEXP_INSTR

REGEXP_INSTR返回與正則表達式匹配的字符和字符串的位置。如

?

SQL> select regexp_instr('The zip code 80831 is for falcon, co', '[[:digit:]]{5}') REGEXP_INSTR from dual;

?

REGEXP_INSTR

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

?????????14

?

c)?????REGEXP_REPLACE

REGEXP_REPLACE與REPLACE函數類似,提供一種修改與所給正則表達式匹配的字符串的方法。作用包括糾正拼寫錯誤、格式化輸入輸出的文本。

如電話號碼的格式為:719-111-1111。使用REGEX_REPLACER的返回值是:

SQL> select regexp_replace('Reformat the phone number 719-111-1111 ...',

?2????????'[1]?[-.]?(\(?[[:digit:]]{3}\)?)+[- .]?'

?3????????|| '([[:digit:]]{3})[- .]?([[:digit:]]{4})',

?4????????' (\1) \2-\3') regexp_replace

?5???from dual;

?

REGEXP_REPLACE

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

Reformat the phone number?(719) 111-1111 ...

S

d)?????REGEXP_LIKE

REGEXP_LIKE運算符與LIKE運算符相似,但是功能更強大,因為它支持使用與此正則表達式與文本進行匹配。語法如下:

REGEXP_LIKE(source_string, pattern, match_parameter)

Source_string可以是文字字符串,如果前面例中的字符串,也可以是包含某些字符串的變量或列。Pattern是要進行匹配的正則表達式。Match_parameter用于指定在匹配時是否區分大小寫。

SQL> select ename, job

?2???from emp

?3??where regexp_like(job, '(clerk|analyst)', 'i');

?

ENAME?????JOB

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

SMITH?????CLERK

SCOTT?????ANALYST

ADAMS?????CLERK

JAMES?????CLERK

FORD??????ANALYST

MILLER????CLERK

轉載于:https://www.cnblogs.com/Csharpblogs/archive/2011/07/02/2096454.html

總結

以上是生活随笔為你收集整理的Oracle正则表达式的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。