12 using regular expressions with oracle database

Upload: akhm62

Post on 06-Apr-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    1/12

    /11/12 12 Using Regular Epressions With Oracle Database

    1/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    Pei Ne

    Si Heade

    Oracle Database Application Developer's Guide -

    Fundamentals

    10 Release 1 (10.1)

    Par Nmber B10795-01 He B Li Ce Ide Mae Ide Feedbac

    Vie PDF

    12

    Using Regular Epressions With Oracle

    Database

    Thi chae idce ega eei f Oace Daabae. Thi chae ce he fig

    ic:

    Wha ae Rega Eei?

    Oace Daabae Rega Eei S

    Oace Daabae SQL Fci f Rega Eei

    Meachaace Sed i Rega Eei

    Ccig Rega Eei

    See Also:Oracle Database SQL Reference f addiia deai Oace Daabae

    SQL fci f ega eei

    Oracle Database Globaliation Support Guide f deai ig SQL

    ega eei fci i a iiga eie

    Mastering Regular Expressions bihed b O'Rei & Aciae, Ic.

    What are Regular Epressions?

    Rega eei ecif ae each f i ig daa ig adadied a cei. Aega eei ca ecif ce ae f chaace eece. F eae, he fig ega

    eei:

    a(bc)d

    eache f he ae: 'a', fed b eihe 'b' 'c', he fed b 'd'. Thi ega eei ache

    bh 'abd' ad 'acd'.

    A ega eei i ecified ig e f chaace:

    Meachaace--ea ha ecif agih f efig he each.

    Liea--he aca chaace each f.

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    2/12

    /11/12 12 Using Regular Epressions With Oracle Database

    2/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    Eae f ega eei a ae gie ae i hi chae.

    Oracle Database Regular Epression Support

    Oace Daabae iee ega eei cia ih he POSIX Eeded Rega

    Eei (ERE) ecificai.

    Rega eei i ieeed ih a e f Oace Daabae SQL fci ha a each ad aiae ig daa. Y ca e hee fci i a eie hee Oace Daabae

    SQL i ed. See "Oace Daabae SQL Fci f Rega Eei" ae i hi chae f e

    ifai.

    Oace Daabae a e f c eachaace ed i ega eei. The behai f

    ed eachaace ad eaed feae i decibed i "Meachaace Sed i Rega

    Eei".

    Note:

    The ieeai f eachaace diffe beee ha ega

    eei i he id. If ae ig ega eei f ahe

    eie Oace Daabae, ee ha he ega eei a i ed

    ad he behai i ha eec.

    Oracle Database SQL Functions for Regular EpressionsThe daabae ide a e f SQL fci ha a each ad aiae ig ig ega

    eei. Y ca e hee fci a daae ha hd chaace daa ch a CHAR,

    NCHAR, CLOB, NCLOB, NVARCHAR2, ad VARCHAR2.

    A ega eei be eced aed beee ige e. Dig , ee ha he eie

    eei i ieeed b he SQL fci ad ca ie he eadabii f cde.

    Tabe 12-1 gie a bief decii f each ega eei fci.

    Note:

    A ih a e iea ed i SQL fci, ega eei be eced

    aed beee ige e. If ega eei icde he ige e

    chaace, ee ige ai a eee e ige ai a

    ihi eei.

    Table 12-1 QL Regular Epression Functions

    SQL Fncion Decipion

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    3/12

    /11/12 12 Using Regular Epressions With Oracle Database

    3/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    REGEXP_LIKE Thi fci eache a chaace c f a ae. Ue hi fci i he

    WHERE cae f a e e achig he ega eei

    ecif.

    See he Oacle Daabae SQL Refeence f a deai he REGEXP_LIKE

    fci.

    REGEXP_REPLACE Thi fci eache f a ae i a chaace c ad eace each

    ccece f ha ae ih he ae ecif.

    See he Oacle Daabae SQL Refeence f a deai he

    REGEXP_REPLACE fci.

    REGEXP_INSTR Thi fci eache a ig f a gie ccece f a ega eei ae.

    Y ecif hich ccece a fid ad he a ii each f.

    Thi fci e a iege idicaig he ii i he ig hee he ach i

    fd.

    See he Oacle Daabae SQL Refeence f a deai heREGEXP_INSTR fci.

    REGEXP_SUBSTR Thi fci e he aca big achig he ega eei ae

    ecif.

    See he Oacle Daabae SQL Refeence f a deai he

    REGEXP_SUBSTR fci.

    Metacharacters Supported in Regular Epressions

    Tabe 12-2 i he eachaace ed f e i ega eei aed SQL ega

    eei fci. Deai he achig behai f hee eachaace i gie i "Ccig

    Rega Eei".

    Table 12-2 Metacharacters Supported in Regular Epressions

    Metacharacter

    Snta Operator Name Description

    . A Chaace --

    D

    Mache a chaace

    + Oe Me --

    P Qaifie

    Mache e e ccece f he ecedig beei

    ? Ze Oe --

    Qei Ma

    Qaifie

    Mache e e ccece f he ecedig beei

    * Ze Me --

    Sa Qaifie

    Mache e e ccece f he ecedig beei

    { Iea--Eac

    C

    Mache eac ccece f he ecedig beei

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    4/12

    /11/12 12 Using Regular Epressions With Oracle Database

    4/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    m, Iea--A Lea

    C

    Mache a ea m ccece f he ecedig beei

    m,n Iea--Beee

    C

    Mache a ea m, b e ha n ccece f he

    ecedig beei

    [ ... ] Machig

    Chaace Li

    Mache a chaace i i ...

    [^ ... ] N-Machig

    Chaace Li

    Mache a chaace i i ...

    O 'ab' ache chaace 'a' 'b'.

    ( ... ) Sbeei

    Gig

    Tea eei ... a a i. The beei ca be a ig f

    iea a ce eei caiig ea.

    \n Bacefeece Mache he h ecedig beei, hee n i a iege f

    1 9.

    \ Ecae Chaace Tea he bee eachaace i he eei a a iea.

    ^ Begiig f Lie

    Ach

    Mach he bee eei he i cc a he

    begiig f a ie.

    $ Ed f Lie

    Ach

    Mach he ecedig eei he i cc a he ed f a

    ie.

    [:cla:] POSIX Chaace

    Ca

    Mach a chaace begig he ecified chaacecla.

    Ca be ed iide a i eei.

    [.elemen.] POSIX Caig

    Seece

    Secifie a caig eece e i he ega eei. The

    elemen e be a defied caig eece, i he

    ce cae.

    [=chaace=] POSIX Chaace

    Eiaece Ca

    Mach chaace haig he ae bae chaace a he chaace

    ecif.

    Constructing Regular Epressions

    Thi eci dice cci f ega eei.

    Basic String Matching ith Regular Epressions

    The ie ach ha ca ef ih ega eei i he baic ig ach. F hi e f

    ach, he ega eei i a ig f iea ih eachaace. F eae, fid he eece

    'abc', ecif he ega eei:

    abc

    Regular Epression Operations on Subepressions

    A eied eaie, ega eei ae cced ig eachaace ad iea. Meachaaceha eae a ige iea, ch a '+' ad '?' ca a eae a eece f iea a he

    eei. T d , e he gig ea ece he eece beei. See

    "Sbeei"f e ifai gig.

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    5/12

    /11/12 12 Using Regular Epressions With Oracle Database

    5/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    Regular Epression Operator and Metacharacter Usage

    Thi eci gie age eae f each ed eachaace ega eei ea.

    Match An Character--Dot

    The do ea'.' ache a ige chaace i he ce chaace e. F eae, fid he

    eece--'a', fed b a chaace, fed b 'c'- -e he eei:

    .

    Thi eei ache a f he fig eece:

    1

    &

    The eei de ach:

    One or More--Plus

    The e e ea'+' ache e e ccece f he ecedig eei. F eae,

    fid e e ccece f he chaace 'a', e he ega eei:

    +

    Thi eei ache a f he fig:

    The eei de ach:

    Zero or One--Question Mark Operator

    The ei a ache e e--ad e--ccece f he ecedig chaace

    beei. Y ca hi f hi ea a ecifig a eei ha i ia i he ce e.

    F eae, fid--'a', ia fed b 'b', he fed b 'c'-- e he fig ega

    eei:

    ?

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    6/12

    /11/12 12 Using Regular Epressions With Oracle Database

    6/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    Thi eei ache:

    abc

    ac

    The eei de ach:

    adc

    abbc

    Zero or More--Star

    The e e ea'*', ache e e ccece f he ecedig chaace

    beei. F eae, fid--'a', fed b e e ccece f 'b', he fed b 'c'--

    e he ega eei:

    ab*c

    Thi eei ache a f he fig eece:

    ac

    abc

    abbc

    abbbbc

    The eei de ach:

    adc

    Interval--Eact Count

    The eac-c iea ea i ecified ih a ige digi eced i bace. Y e hi ea

    each f a eac be f ccece f he ecedig chaace beei.

    F eae, fid hee 'a' cc eac 5 ie, ecif he ega eei:

    a{5

    Thi eei ache:

    aaaaa

    The eei de ach:

    aaaa

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    7/12

    /11/12 12 Using Regular Epressions With Oracle Database

    7/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    Ineal--A Lea Con

    Y e he a-ea-c iea ea each f a ecified be f ccece, e, f he

    ecedig chaace beei. F eae, fid hee 'a' cc a ea 3 ie, e he

    ega eei:

    a{3,

    Thi eei ache a f he fig:

    aaa

    aaaaa

    The eei de ach:

    aa

    Ineal--Beeen Con

    Y e he beee-c iea ea each f a be f ccece ihi a ecified age.

    F eae, fid hee 'a' cc a ea 3 ie ad e ha 5 ie, e he fig ega

    eei:

    a{3,5

    Thi eei ache a f he fig eece:

    aaa

    aaaa

    aaaaa

    The eei de ach:

    aa

    Maching Chaace Li

    Y e he achig chaace i each f a ccece f a chaace i a i. F eae, fid

    eihe 'a', 'b', 'c' e he fig ega eei:

    [abc]

    Thi eei ache he fi chaace i each f he fig ig:

    at

    bet

    cot

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    8/12

    /11/12 12 Using Regular Epressions With Oracle Database

    8/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    The eei de ach:

    The fig ega eei ea ae aed ihi he chaace i, a he eachaace

    icded i a chaace i e hei ecia eaig (ae eaed a iea):

    Rage ea'-'POSIX chaace ca [::]

    POSIX caig eece [. .]

    POSIX chaace eiaece ca [= =]

    Non-Maching Chaace Li

    Ue he -achig chaace i ecif chaace ha d a ach. Chaace ha ae

    i he -achig chaace i ae eed a a ach. F eae, ecde he chaace 'a', 'b',

    ad 'c' f each e, e he fig ega eei:

    [^]

    Thi eei ache chaace 'd' ad 'g' i he fig ig:

    The eei de ach:

    A ih he achig chaace i, he fig ega eei ea ae aed ihi he -

    achig chaace i (a he eachaace icded i a chaace i ae iged):

    Rage ea'-'

    POSIX chaace ca [::]

    POSIX caig eece [. .]

    POSIX chaace eiaece ca[= =]

    F eae, he fig ega eei ecde a chaace beee 'a' ad 'i' f he each

    e:

    [^-]

    Thi eei ache he chaace 'j' ad '' i he fig ig:

    The eei de ach he chaace:

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    9/12

    /11/12 12 Using Regular Epressions With Oracle Database

    9/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    Or

    Use the Or operator'' to specif an alternate epression. For eample to match 'a' or 'b', use the folloing

    regular epression:

    ab

    Subepression

    You can use the subepression operator to group characters that ou ant to find as a string or to create a

    comple epression. For eample, to find the optional string 'abc', folloed b 'def', use the folloing regular

    epression:

    (abc)?def

    This epression matches strings 'abcdef' and 'def' in the folloing strings:

    abcdefghi

    defghi

    The epression does not match the string:

    ghi

    Backreference

    The backreference lets ou search for a repeated epression. You specif a backreference ith '\', here

    is an integer from 1 to 9 indicating the nth preceding subepression in our regular epression.

    For eample, to find a repeated occurrence of either string 'abc' or 'def', use the folloing regular epression:

    (abcdef)\1

    This epression matches the folloing strings:

    abcabc

    defdef

    The epression does not match the folloing strings:

    abcdef

    abc

    The backreference counts subepressions from left to right starting ith the opening parenthesis of each

    preceding subepression.

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    10/12

    /11/12 12 Using Regular Epressions With Oracle Database

    10/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    The backreference lets ou search for a repeated string ithout knoing the actual string ahead of time. For

    eample, the regular epression:

    ^(.*)\1$

    matches a line consisting of to adjacent appearances of the same string.

    Ecape Chaace

    Use the escape character'\' to search for a character that is normall treated as a metacharacter. For

    eample to search for the '+' character, use the folloing regular epression:

    \+

    This epression matches the plus character '+' in the folloing string:

    +

    The epression does not match an characters in the string:

    Beginning of Line Ancho

    Use the beginning of line anchor^ to search for an epression that occurs onl at the beginning of a line. For

    eample, to find an occurrence of the string at the beginning of a line, use the epression:

    ^

    This epression matches in the string:

    The epression does not match in the folloing string:

    End of Line Ancho

    The end of line anchor metacharacter'$' lets ou search for an epression that occurs onl at the end of a

    line. For eample, to find an occurrence of that occurs at the end of a line, use the folloing epression:

    $

    This epression matches in the string:

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    11/12

    /11/12 12 Using Regular Epressions With Oracle Database

    11/12ocs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

    The eei de ach def i he fig ig:

    defghi

    POSIX Chaace Cla

    The POSIX chaace ca ea e each f a eei ihi a chaace i ha i a ebe

    f a ecific POSIX Chaace Ca. Y ca e hi ea each f chaace ih ecific

    faig ch a ecae chaace, ca each f ecia chaace ch a digi

    cai chaace. The f e f POSIX chaace cae i ed.

    T e hi ea, ecif he eei ig he a [:cla:] hee cla i he ae f he

    POSIX chaace ca each f. F eae, each f e e cecie ecae

    chaace, e he fig ega eei:

    [[:pper:]]+

    Thi eei ache 'DEF' i he ig:

    abcDEFghi

    The eei de e a ach f he fig ig:

    abcdefghi

    Ne ha he chaace ca cc ihi a chaace i, he chaace ca i aa eed ihi

    he bace f he chaace i i he ega eei.

    See Alo:

    Mastering Regular Epressions bihed b O'Rei & Aciae, Ic. f e

    ifai POSIX chaace cae

    POSIX Collaing Seence

    The POSIX caig eece eee ea[. .] e e a caig eece i ega

    eei. The eee ecif be a defied caig eece i he ce cae.

    Thi ea e e a ichaace caig eece i ega eei hee e

    chaace d heie be aed. F eae, ca e hi ea ee ha he caig

    eece 'ch', he defied i a cae ch a Saih, i eaed a e chaace i eai ha deed

    he deig f chaace.

    T e he caig eece ea, ecif [.elemen.] hee elemen i he caig eece

    a fid. Y ca e a caig eece ha i defied i he ce cae icdig ige-chaace

    eee a e a ichaace eee.

  • 8/3/2019 12 Using Regular Expressions With Oracle Database

    12/12

    /11/12 12 Using Regular Epressions With Oracle Database

    Previous Next

    For example, to find the collating sequence 'ch', use the following regular expression:

    [[.ch.]]

    This expression matches the sequence 'ch' in the following string:

    chabc

    The expression does not match the following string:

    cdefg

    You can use the collating sequence operator in any regular expression where collation is needed. For

    example, to specify the range from 'a' to 'ch', you can use the following expression:

    [a-[.ch.]]

    POSIX Chaace Eialence Cla

    Use the POSIX character equivalence class operator to search for characters in the current locale that are

    equivalent. For example, to find the Spanish character '' as well as 'n'.

    To use this operator, specify [=characer=], to find all characters that are members of the same character

    equivalence class as the specified characer.

    For example, the following regular expression could be used to search for characters equivalent to 'n' in aSpanish locale:

    [[=n=]]

    This expression matches both 'N' and '' in the following string:

    El Nio

    Noe:

    The character equivalence class must occur within a character list, so the

    character equivalence class is always nested within the brackets for the character

    list in the regular expression.

    Usage of character equivalents depends on how canonical rules are defined for

    your database locale. See the Oracle Database Globaliation Support Guide for

    more information on linguistic sorting and string searching.

    Copyright 1996, 2003 Oracle Corporation

    All Rights Reserved.Home Book List Contents Index Master Index Feedback