前言
正則表達式已經(jīng)在很多軟件中得到廣泛的應用,包括*nix(Linux, Unix等),HP等操作系統(tǒng),PHP,C#,Java等開發(fā)環(huán)境。
本文主要介紹了關于Oracle中正則表達式的使用方法,下面話不多說了,來一起看看詳細的介紹。
Oracle使用正則表達式離不開這4個函數(shù):regexp_like、regexp_substr、regexp_instr、regexp_replace。
regexp_like
該函數(shù)只能用于條件表達式,和 like 類似,但是使用的正則表達式進行匹配
//查詢所有包含小寫字母或者數(shù)字的記錄。
select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
regexp_substr
該函數(shù)和 substr 類似,用于拾取合符正則表達式描述的字符子串,該函數(shù)的定義如下
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
- String 輸入的字符串
- pattern 正則表達式
- position 標識從第幾個字符開始正則表達式匹配。(默認為1)
- occurrence 標識第幾個匹配組。(默認為1)
- modifier 取值范圍:
i:大小寫不敏感;
c:大小寫敏感;
n:點號 . 不匹配換行符號;
m:多行模式;
x:擴展模式,忽略正則表達式中的空白字符。
下面是一些實例
--檢索中間的數(shù)字
SELECT REGEXP_SUBSTR(a,'[0-9]+') FROM test_reg_substr WHERE REGEXP_LIKE(a, '[0-9]+');
--檢索中間的數(shù)字(從第一個字母開始匹配,找第2個匹配項目)
SELECT NVL(REGEXP_SUBSTR(a,'[0-9]+',1, 2), '-') AS a FROM test_reg_substr
WHERE REGEXP_LIKE(a, '[0-9]+');
regexp_instr
該函數(shù)和 instr 類似,用于標定符合正則表達式的字符子串的開始位置,Oracle數(shù)據(jù)庫中的REGEXP_INSTR函數(shù)的語法是
REGEXP_INSTR (source_char, pattern [, position [, occurrence
[, return_option [, match_parameter ] ] ] ] )
- source_char 搜索值的字符表達式
- pattern 正則表達式
- position 可選。搜索在字符串中的開始位置。如果省略,則默認為1,這是字符串中的第一個位置。
- occurrence 可選。它是模式字符串中的第n個匹配位置。如果省略,默認為1。
- return_option 可選 指定Oracle返回的位置,
0那么Oracle將返回出現(xiàn)的第一個字符的位置。這是默認的,
1則Oracle返回字符之后發(fā)生的位置。
- match_parameter 取值范圍:
i:大小寫不敏感;
c:大小寫敏感;
n:點號 . 不匹配換行符號;
m:多行模式;
x:擴展模式,忽略正則表達式中的空白字符。
下面是一些實例
--找到字符串中的第一個”e”字的位置
--返回2
SELECT REGEXP_INSTR ('hello itmyhome', 'e') FROM dual;
--“1”為開始位置 “2”是搜索第二個匹配的,”0”是return_option
--返回出現(xiàn)的第一個字符位置“c”是區(qū)分大小寫 ,所以將返回13
SELECT REGEXP_INSTR ('my is itMyhome', 'm', 1, 2, 0, 'c') FROM dual;
--
SELECT REGEXP_INSTR ('World filled with love', 'with', 1, 1, 0, 'i') FROM dual;
--匹配多個備選
SELECT REGEXP_INSTR ('Itmyhome', 'a|i|o|e|u') FROM dual;
regexp_replace
該函數(shù)和 replace 類似,用于替換符合正則表達式的字符串,Oracle數(shù)據(jù)庫中的REGEXP_REPLACE函數(shù)的語法是
REGEXP_REPLACE(source_char, pattern [, replace_string
[, position [, occurrence [, match_parameter ] ] ] ])
- source_char 搜索值的字符表達式
- pattern 正則表達式
- replace_string 可選。匹配的模式將被替換replace_string字符串。
如果省略replace_string參數(shù),將刪除所有匹配的模式,并返回結(jié)果字符串。
- position 可選。在字符串中的開始位置搜索。如果省略,則默認為1。
- occurrence 它是模式字符串中的第n個匹配位置。如果省略,默認為1。
- match_parameter
i:大小寫不敏感;
c:大小寫敏感;
n:點號 . 不匹配換行符號;
m:多行模式;
x:擴展模式,忽略正則表達式中的空白字符。
如下是一些實例
--字符串替換
--luck is my network id
SELECT REGEXP_REPLACE ('itmyhome is my network id', '^(\S*)', 'luck') FROM dual;
--此示例將所指定的\d數(shù)字將以#字符替換
--Result: '#, #, and ## are numbers in this example'
SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '\d', '#') FROM dual;
總結(jié)
以上就是這篇文章的全部內(nèi)容了,本文還有許多不足,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- Oracle通過正則表達式分割字符串 REGEXP_SUBSTR的代碼詳解
- Oracle 正則表達式實例詳解
- ORACLE數(shù)據(jù)庫中怎么求除數(shù)字、字母之外的非中文字符的正則表達式
- oracle正則表達式regexp_like的用法詳解
- Oracle正則表達式使用介紹
- Oracle 10G:PL/SQL正規(guī)表達式(正則表達式)手冊
- ORACLE 正則解決初使化數(shù)據(jù)格式不一致
- Oracle數(shù)據(jù)庫正則表達式使用場景代碼實例