ORACLE正則表達式摘錄筆記_第1頁
ORACLE正則表達式摘錄筆記_第2頁
ORACLE正則表達式摘錄筆記_第3頁
ORACLE正則表達式摘錄筆記_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、ORACLE!則表達式一. 正則表達式簡介:正則表達式,就是以某種模式來匹配一類字符申。一旦概括了某類字符申, 那么正則表達式即 可用丁針對字符申的各種相關(guān)操作。例如,判斷匹配性,進行 字符申的重新組合等。正則表達式提供了字符申處理的快捷方式。Oracle 10g及以后的版本中也支持正則表達式.二. 正則表達式相對通配符的優(yōu)勢:1. 正則表達式中不僅存在著代表模糊字符的特殊字符,而且存在著量詞等修飾字符,使得模式的控制更加靈活和強大。2. 通配符的使用一般是在特定的環(huán)境下,不同的環(huán)境下,通配符有可能不同。 而正則表達式,不但廣¥之應(yīng)用丁各種編程語言',而且在各種編程語言

2、9;中,保 持了語法的高度一致性。三. 元字符:元字符是指在正則表達式中表示特殊含義的字符ORACLE正則表達式元字 符含義A匹配輸入字符申的開始位置,在方括號表達式中使用,此時它表示 不接受該字符集合。$匹配輸入字符申的結(jié)尾位置。如果設(shè)置了RegExp對象的Multiline 屆性,則 $也匹配'n'或r'。.匹配除換行符n之外的任何單字符。?匹配前面的子表達式零次或一次。+匹配前面的子表達式一次或多次。*匹配前面的子表達式零次或多次。|指明兩項之間的一個選擇。例子'A(a-z+|0-9+)$'表示所有小寫字母 或數(shù)子組合成的子符申。()標記一個子表達

3、式的開始和結(jié)束位置(字符組)。_標記一個中括虧表達式。m,n一個精確地出現(xiàn)次數(shù)范圍,m=出現(xiàn)次數(shù)=n, 'm'表示出現(xiàn)m次, 'm,'表示至少出現(xiàn)m次。四. 量詞量詞用來指定量詞的前一個字符出現(xiàn)的次數(shù)。量詞的形式主要有“2” “*、”“+(' "?!绷吭~在用丁匹配字符申時,默認遵循 貪婪原則。貪婪原則是指,盡可能多 地匹配字符。例如:字符申“Function(p),(OK),如果使用正則表達式“)'進行匹 配,則得到字符申“(P),(OK):而非"(p);”若欲得到“(p),”則必須取消量詞的貪婪原則,此時只需要為量詞后追加另

4、外一個數(shù)量詞即可。如上面的正則表達式應(yīng)該改為“)”。五. 字符轉(zhuǎn)義:元字符在正則表達式中有特殊含義。如果需要使用其原義,則需要用到字符 轉(zhuǎn)義。字符轉(zhuǎn)義使用字符°來實現(xiàn)。其語法模式為:機字符。例如,'表 示普通字符“.;”“.doc'匹配字符申“.doc;”而普通字符"'需要使用“”來表示。六. 字符組.字符組是指將模式中的某些部分作為一個整體。這樣,量詞可以來修飾字符 組,從而提高正則表達式的靈活性。字符組通過 ()來實現(xiàn).許多編程語言中,可以利用 “$1了 “$件來獲取第一個、第二個字符組,即 所謂的后向引用。在Oracle中,弓仙格式為 T、 2

5、”。七. 正則表達式分支可以利用“限創(chuàng)建多個正則表達式分支。例如,“w4 ”可以看做兩個正則表達式一一“d4 ”和w4 ”,匹配其中任何一個正則表達式的字符申都被 認為匹配整個正則表達式。如果該字符申兩個正則表達式分支都匹配,那么將被處理為匹配第一個正則表達式分支。八. 字符類.在Oracle中,正則表達式的用法與標準用法略有不同。 這種不同主要體現(xiàn)在 對丁字符類的定義上。Orale中不使用字符“'與普通字符組合的形式來實現(xiàn)字符 類,而是具有其特殊語法.ORACLE字符類表小含義:alpha:表小任息子母,正則表達式的月乂語法為w。:digit:表小任息數(shù)子,正則表達式的一般語法為d。

6、:lower:表示任意小寫字母。:upper:表小任息大與子母。:alnum:表小任息子母和數(shù)子。:space:表小任息仝白子付,正則表達式的 般語法為 s。:punct:表示任意標點符號。:xdigit:表示任意16進制的數(shù)字,相當(dāng)于0-9a-fA-F。九.ORACLE中的四個正則表達式相關(guān)函數(shù).1. regexp_like(expression, regexp)返回值£一個布爾值。如果第一個參數(shù)匹配第二個參數(shù)所代表的正則表達 式,那么將返回真,否則將返回假。舉例: select * from people where regexp_like(name,,AJ.*$');相

7、當(dāng)于: select * from people where name like,J%,;2. regexp_instr(expression, regexp, startindex, times)返回找新的匹配字符申的位置.參數(shù)startindex表示開始進行匹配比較的位置;參數(shù) times表示第幾次匹配 作為最終匹配結(jié)果。舉例:select regexp_instr('12.158', '.') position from dual;regexp_instr('12.158', '.'用丁獲取第一個小數(shù)點的位置。3. rege

8、xp_substr(expression, regexp)返回第一個字符申參數(shù)中,與第二個正則表達式參數(shù)相匹配的子字符申。舉例:create table html(id integer, html varchar2(2000);insert into htmlvalues (1, '<a href= " link</a>');表html中存儲了 HTML標簽及內(nèi)容?,F(xiàn)欲從標簽<a>中獲得鏈接的url,那么可以利用regexp_substr()S數(shù)。select id, regexp_substr(html, 'httpa-zA-Z

9、0-9.:/*') url from html;4. regexp_replace(expression, regexp, replacement)彳務(wù)expression中的按regexp匹再己至U的音S分用 replacement代替.在參數(shù)replacement中,可以含有后向引用,以便將正則表達式中的字符組 重新捕獲。例如,某些國家和地區(qū)的日期格式可能為“MM/DD/YYYY ,那么可以利用regexp_replace()S數(shù)來轉(zhuǎn)換日期格式。select regexp_replace('09/29/2008', 'A(0-92)/(0-92)/(0-94

10、)$', '3-1-2') replacefrom dual;注:在進行正則表達式匹配時,還可以忽略字符大小寫形式進行匹配.但是不能解除:upper:和:lower:的作用.select * from people where regexp_like(name, 'or');select * from people where regexp_like(name, 'or', 'i'); -,i?表示忽略大小寫十.正則表達式練習(xí)第一:REGEXP_LIKE函數(shù)用法EMP表結(jié)構(gòu)如下:SQL> desc emp;NameN

11、ull? TypeNOT NULL NUMBER(4)VARCHAR2(9)NUMBER(4) DATENUMBER(7,2)NUMBER(7,2)NUMBER(2)EMPNO ENAME VARCHAR2(10)JOB MGR HIREDATE SAL COMM DEPTNOEMP表中部分數(shù)據(jù)如下:SQL> select empno,ename,sal,hiredate from emp;EMPNO ENAMESAL HIREDATE7369 SMITH800 17-12 月-807499 ALLEN1600 20-2 月-817521 WARD1250 22-2 月-817566 J

12、ONES2975 02-4月-81下面給出幾種REGEXP_LIKE函數(shù)的例子1、查找員工編號為4位數(shù)字的員工信息SQL> select empno,ename from emp where regexp_like(empno,,A:digit:4$');或者:select empno,ename from emp where regexp_like(empno,,A0-9$,);EMPNO ENAME7369 SMITH7499 ALLEN7521 WARD7566 JONES2、查找員工姓名為全英文的員工信息SQL> select empno,ename from em

13、p where regexp_like(ename,,A:alpha:+$,);或者: select * from emp where regexp_like(ename,,Aa-zA-Z+$,);EMPNO ENAME7369 SMITH7499 ALLEN7521 WARD7566 JONES7654 MARTIN3、查找員工姓名以“ a”字母開頭,不區(qū)分大小寫SQL> select empno,ename from emp where regexp_like(ename,,Aa,,,i,);EMPNO ENAME7499 ALLEN7876 ADAMS4、查找員工姓名為全英文,且以

14、“ N”結(jié)尾的員工信息SQL> select empno,ename from emp where regexp_like(ename,,A:alpha:+N$,);EMPNO ENAME7499 ALLEN7654 MARTIN5、查找員工編號以非數(shù)字開頭的員工信息SQL> select empno,ename from emp where regexp_like(empno,'A:digit:');no rows selected第二:REGEXP_INSTR函數(shù)用法1、查找員工編號第一個非數(shù)字字符的位置SQL> select regexp_instr(empno,'A:digit:') position from emp;POSITION0002、從第三個字符開始,查找員工編號中第二個非數(shù)字字符的位置SQL> select regexp_instr(empno,'A:digit:',3,2) position from emp;POSITION第三:REGEXP_SUBSTR函數(shù)用法1、返回從ename的第二個位置開始查找,并且是以“ L”開頭到結(jié)尾的字申SQL> select regexp_substr(ename,'L.*',

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論