方括號表達示
方括號表示式
描述[[:alnum:]]
字母和數字混合的字元
[[:alpha:]]
字母字元
[[:cntrl:]]
控制字元
[[:digit:]]
數字字元
[[:graph:]]
影象字元
[[:lower:]]
小寫字母字元
[[:print:]]
列印字元
[[:punct:]]
標點符號字元
[:space:]
空格字元
[[:upper:]]
大寫字母字元
[[:xdigit:]]
十六進製制數字字元
l 元字元
元字元描述
*?如果有前面字串的0次以上出現時匹配
+?如果有前面字串的1次以上出現時匹配
m是整數。它文字中找出給定子表示式的恰好m次出現
?前面的字串只出現一次時匹配
m是整數。它在文字中找出給定子表達示的至少m次出現
?匹配前面的字串至少n次
m和n是整數。它在文字中找出給定子表達示的m到n次出現
匹配前面的字串至少到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:]]' ) regexp_substr from dual;
regexp_substr
-------------
80831
示例2:
sql> select regexp_substr('the zip code 80831 is for falcon, co', '[:alpha:]', 1, 3) regexp_substr from dual;
regexp_substr
-------------
code
示例3sql> select regexp_substr('comments or questions - email [email protected]', '[[:alnum:]](([_\.\-\+]?[[:alnum:]]+)*)@' ||
2 '([[:alnum:]]+)(([\.-]?[[:alnum:]]+)*)\.([[:alpha:]])') regexp_substr
3 from dual;
regexp_substr
----------------------
b) regexp_instr
regexp_instr返回與正規表示式匹配的字元和字串的位置。如
sql> select regexp_instr('the zip code 80831 is for falcon, co', '[[:digit:]]') regexp_instr from dual;
regexp_instr
------------
14c) 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 || '([[:digit:]])[- .]?([[:digit:]])',
4 ' (\1) \2-\3') regexp_replace
5 from dual;
regexp_replace
---------------------------------------------
reformat the phone number (719) 111-1111 ...
sd) 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
不過regexp_like這種方式也有缺陷,字串限制在4000個字元,並且要寫在一行,否則查不出換行的符合條件的。
oracle 正規表示式用法
l 方括號表達示 方括號表示式 描述 alnum 字母和數字混合的字元 alpha 字母字元 cntrl 控制字元 digit 數字字元 graph 影象字元 lower 小寫字母字元 print 列印字元 punct 標點符號字元 space 空格字元 upper 大寫字母字元 xdigit 十六...
Oracle正規表示式的用法
l 方括號表達示 方括號表示式 描述 alnum 字母和數字混合的字元 alpha 字母字元 cntrl 控制字元 digit 數字字元 graph 影象字元 lower 小寫字母字元 print 列印字元 punct 標點符號字元 space 空格字元 upper 大寫字母字元 xdigit 十六...
Oracle正規表示式的用法
l 方括號表達示 方括號表示式 描述 alnum 字母和數字混合的字元 alpha 字母字元 cntrl 控制字元 digit 數字字元 graph 影象字元 lower 小寫字母字元 print 列印字元 punct 標點符號字元 space 空格字元 upper 大寫字母字元 xdigit 十六...