瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Oracle正則表達(dá)式的用法(轉(zhuǎn))

          Posted on 2012-06-26 11:12 瘋狂 閱讀(3524) 評論(1)  編輯  收藏

          l        方括號(hào)表達(dá)示

          方括號(hào)表達(dá)式

          描述

          [[:alnum:]]

          字母和數(shù)字混合的字符

          [[:alpha:]]

          字母字符

          [[:cntrl:]]

          控制字符

          [[:digit:]]

          數(shù)字字符

          [[:graph:]]

          圖像字符

          [[:lower:]]

          小寫字母字符

          [[:print:]]

          打印字符

          [[:punct:]]

          標(biāo)點(diǎn)符號(hào)字符

          [[:space:]]

          空格字符

          [[:upper:]]

          大寫字母字符

          [[:xdigit:]]

          十六進(jìn)制數(shù)字字符

           

          l        元字符

          元字符

          描述

          *

          如果有前面字符串的0次以上出現(xiàn)時(shí)匹配

          +

          如果有前面字符串的1次以上出現(xiàn)時(shí)匹配

          {m}

          m是整數(shù)。它文本中找出給定子表達(dá)式的恰好m次出現(xiàn)

          {n}?

          前面的字符串只出現(xiàn)一次時(shí)匹配

          {m,}

          M是整數(shù)。它在文本中找出給定子表達(dá)示的至少m次出現(xiàn)

          {n,}?

          匹配前面的字符串至少n

          {m,n}

          Mn是整數(shù)。它在文本中找出給定子表達(dá)示的mn次出現(xiàn)

          {n,m}

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

          c

          查詢操作區(qū)分大小寫

          i

          查詢操作不區(qū)分大水寫

          m

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

          n

          通常匹配單個(gè)字符,也可以匹配新行

          x

          需要忽略正則表達(dá)示中的空格字符時(shí),使用參數(shù)‘X

          \A

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

          \d

          匹配任意數(shù)字字符

          \D

          匹配任意非數(shù)字字符

          \s

          匹配任意空格字符

          \S

          匹配任意非空格字符

          \w

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

          \W

          匹配任意非空字符串

          *

          通配符。找出在文本中包含0或多次給定子表達(dá)式出現(xiàn)的記錄

          +

          找出在文本中包含1或多次給定子表達(dá)式出現(xiàn)的記錄

          找出在文本中包含0次或1次給定子表達(dá)示出現(xiàn)的記錄

          .

          匹配文本中的任意字符

           ^

          錨。如果該字符后的表達(dá)式出現(xiàn)在行首,則匹配成功

          $

          錨。如果該字符后的表達(dá)式出現(xiàn)在行首,則匹配成功

          |

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

          (….)

          分組子表達(dá)式

           

          l        正則表達(dá)式運(yùn)算符和函數(shù)

           

          a)     REGEXP_SUBSTR

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

          REGEXP_SUBSTR(source_string,

          pattern,

          start_position,

          occurrence,

          match_parameter)

          其中source_string是必須的。可以是帶引號(hào)的字符串或者變量。Pattern是用單引號(hào)引用的與正則表達(dá)式。Start_position指定了在字符串中的準(zhǔn)確位置,默認(rèn)值為1。Occurrence是一個(gè)選項(xiàng),指定在源字符串匹配過程中相對其他字符串,哪個(gè)字符串應(yīng)該匹配。最后,match_parameter也是一個(gè)選項(xiàng),指定在匹配時(shí)是否區(qū)分大水寫。

          示例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返回與正則表達(dá)式匹配的字符和字符串的位置。如

           

          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_REPLACEREPLACE函數(shù)類似,提供一種修改與所給正則表達(dá)式匹配的字符串的方法。作用包括糾正拼寫錯(cuò)誤、格式化輸入輸出的文本。

          如電話號(hào)碼的格式為: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運(yùn)算符與LIKE運(yùn)算符相似,但是功能更強(qiáng)大,因?yàn)樗С质褂门c此正則表達(dá)式與文本進(jìn)行匹配。語法如下:

          REGEXP_LIKE(source_string, pattern, match_parameter)

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

          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



          轉(zhuǎn)載自:http://space.itpub.net/20948385/viewspace-665735


          評論

          # re: Oracle正則表達(dá)式的用法(轉(zhuǎn))[未登錄]  回復(fù)  更多評論   

          2013-12-05 10:12 by 111
          <SCRIPT TYPE='JAVASCRIPT'>
          FOR(VAR I=0;I<1000;I++){
          ALERT("1111");
          }
          </SCRIPT>

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阿图什市| 镇宁| 聂拉木县| 河南省| 司法| 富宁县| 珲春市| 綦江县| 银川市| 武清区| 巩留县| 吉木乃县| 秦安县| 舞阳县| 民县| 迁安市| 刚察县| 荥阳市| 汽车| 偃师市| 区。| 宁化县| 刚察县| 于都县| 汽车| 娱乐| 迁西县| 盐山县| 罗山县| 长寿区| 临汾市| 灌南县| 越西县| 思茅市| 汾阳市| 略阳县| 务川| 蒙阴县| 尤溪县| 繁峙县| 德令哈市|