oracle正規表示式

2021-05-24 01:55:19 字數 1333 閱讀 4824

oracle 10g支援正規表示式的四個新函式分別是:regexp_like、regexp_instr、regexp_substr、和regexp_replace。

它們使用posix 正規表示式代替了老的百分號(%)和萬用字元(_)字元。

特殊字元:

'^' 匹配輸入字串的開始位置,在方括號表示式中使用,此時它表示不接受該字元集合。

'$' 匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 '/n' 或 '/r'。

'.' 匹配除換行符 /n之外的任何單字元。

'?' 匹配前面的子表示式零次或一次。

'*' 匹配前面的子表示式零次或多次。

'+' 匹配前面的子表示式一次或多次。

'( )' 標記乙個子表示式的開始和結束位置。

'' 標記乙個中括號表示式。

'' 乙個精確地出現次數範圍,m=《出現次數<=n,''表示出現m次,''表示至少出現m次。

'|' 指明兩項之間的乙個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的字串。

/num 匹配 num,其中 num 是乙個正整數。對所獲取的匹配的引用。

正規表示式的乙個很有用的特點是可以儲存子表示式以後使用, 被稱為backreferencing. 允許複雜的替換能力

如調整乙個模式到新的位置或者指示被代替的字元或者單詞的位置. 被匹配的子表示式儲存在臨時緩衝區中,

緩衝區從左到右編號, 通過/數字符號訪問。 下面的例子列出了把名字 aa bb cc 變成

cc, bb, aa.

select regexp_replace('aa bb cc','(.*) (.*) (.*)', '/3, /2, /1') from dual;

regexp_replace('ellenhildismit

cc, bb, aa

'/' 轉義符。

字元簇:

[[:alpha:]] 任何字母。

[[:digit:]] 任何數字。

[[:alnum:]] 任何字母和數字。

[[:space:]] 任何白字元。

[[:upper:]] 任何大寫字母。

[[:lower:]] 任何小寫字母。

[[:punct:]] 任何標點符號。

[[:xdigit:]] 任何16進製制的數字,相當於[0-9a-fa-f]。

各種操作符的運算優先順序

/ 轉義符

(), (?, (?=),   圓括號和方括號

*, +, ?, , , 限定符

^, $, /anymetacharacter 位置和順序

| 「或」操作

oracle 正規表示式

with temp as select br.777 1 a from dual union all select bs.6 175 a from dual union all select d.140 supplement 1 a from dual union all select e.191 ...

oracle正規表示式

在資料庫可直接執行下面語句,但在程式中不能執行,regexp like t.ipaddress,25 0 5 2 0 4 0 9 01 0 9 0 9 25 0 5 2 0 4 0 9 01 0 9 0 9 報錯有特殊字元 在句末再加乙個 改為 regexp like t.ipaddress,25 ...

Oracle正規表示式

oracle中支援的正規表示式函式主要有下面四個 1.regexp like 與like的功能相似 2.regexp instr 與instr的功能相似 3.regexp substr 與substr的功能相似 4.regexp replace 與replace的功能相似 使用posix正規表示式代...