Professional Documents
Culture Documents
FrameworkparaelDesarrollo IntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
deAplicaciones PorFernandoGarca
ApplicationExpress Publicadoenmarzo2012
BusinessIntelligence Prlogo
CloudComputing
HistricamenteOraclehabaofrecidoprestacionesmuybsicasparaelusodeexpresionesregularesylamanipulacindecadenasde
Communications caracteres.Aquellosdesarrolladoresquenecesitabanhacerusodeexpresionesregularesseveanprcticamenteobligadosaextraerlosdatos
RendimientoyDisponibilidadde
delabaseparamanipularlascadenasdecaracteresencapasintermediasdelaaplicacin.Apartirdelaversin10g,conlaintroduccindelas
Basededatos llamadasfuncionesREGEXP(REGularEXPressions),Oraclenosofreceunabateradesofisticadasypotentesherramientasnativasquepermiten
aldesarrolladorcentralizarelprocesamientointensivodecadenasdecaracteresdentrodelabasededatosOracleyconloslenguajesSQLy
DataWarehousing
PL/SQL.
.NET
TabladeContenidos
LenguajesdeProgramacin
Dinmicos 1)QusonlasExpresionesRegulares?
Embedded 2)ParaqusirvenlasExpresionesRegulares?
3)EntendiendolasExpresionesRegulares
Enterprise2.0
3.1)ElmetacaracterPunto(.)
ArquitecturaEnterprise
3.2)ElmetacaracterSuma(+)
EnterpriseManagement 3.3)ElmetacaracterAsterisco(*)
GridComputing 3.4)Elmetacaracter[char]
3.5)Elmetacaracter[^char]
IdentidadySeguridad
3.6)Elmetacaractersubexpresin(expr)
Java 3.7)Elmetacaracterdeanclajedeprincipiodelnea(^)
Linux 3.8)Elmetacaracterdeanclajedefindelnea($)
3.9)Elmetacaracterdeescape(\)
ServiceOrientedArchitecture
4)ConstruyendoExpresionesRegularescomplejas
SQL&PL/SQL
5)UsodelasExpresionesRegularesenOracle
AdministracindeServersy 6)ProfundizandoelconocimientoyusodelasExpresionesRegularesenOracle
Storage
QusonlasExpresionesRegulares?
DesarrollodeServersy
Storage
Antesdeintroducirnosbienenelmundodelasexpresionesregularesesnecesarioqueleperdamosunpocoelmiedo.Lomscomnesqueun
HardwareyArquitecturade serhumanohuyadesesperadamentecuandoseencuentraporprimeravezconunaexpresinregularcomolasiguiente:
Sistemas
^Ab*[08]\*(ha|ve)n$
Virtualizacin
Sinembargo,unbuenmanejodelasexpresionesregularesesalgotanpoderosoquevalelapenaquenostomemosuntiempoparaaprendera
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 1/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
utilizarlas.Adems,sabermanejarexpresionesregularesnosservirnosolamenteenelmundodelasbasesdedatosOraclelaspodremosusar
tambinenotroslenguajesdeprogramacincomoPerl,Java,.Net,PhpyUnixShellScripting,entreotros.
Laideadeestedocumentoeshacerunaintroduccinaltemademaneraprctica,comenzandoconejemplossencillosparaluegoiraumentando
lacomplejidad.
Comenzamosentoncesdefiniendoaunaexpresinregularcomounacadenadecaracteresquedefinenunpatrndebsqueda.Enuna
expresinregularencontramosliteralesymetacaracteres.Losliteralesseleenalpiedelaletra.Losmetacaracteressoncaracteresquetienenun
significadoespecial.
Tomemosporejemplolasiguienteexpresinregular:
[n|p]ata
Losmetacaracteressonloscorchetesyelsmbolopipe(|).Elrestosonliterales.
Loscorchetesagrupanavarioscaracteresenunsolocaracter.
Elsmbolopipeindicaunsmbolouotroesdecirla'n'ola'p'.
Luego,laexpresinregular:
[n|p]ata
Coincideconlascadenas:
nata
pata
Seguramenteellectorsepreguntarcmodeterminarquelementosdeunaexpresinregularsonliteralesyquelementossonmetacaracteres.
Msadelanteencontrarlarespuesta.Sigamos.
ParaqusirvenlasExpresionesRegulares?
EnunabasededatosOracleexistendiversosescenariosenquelaimplementacindeexpresionesregularesconstituyeunaherramientade
granutilidad:
Bsquedadetexto.Lasexpresionesregularesnospermitenhacerbsquedascomplejasdecadenasdecaracteresdentrodelascolumnasde
nuestrastablas.
Formateodedatos.PodemosmodificarlosdatosproyectadosenlassentenciasSELECT,invirtiendopalabras,agregandooquitandocaracteres,
etc.
Definicindeconstraints.Afindeforzarelcontenidodeunacolumnaparaqueseajusteaunformatodeterminado:casilladecorreo,nmero
telefnico,etc.
Manipulacindedatos.Porejemplo,regularizandodatosenprocesosdemigracindesdeaplicacioneslegacyyaplicandoreglasdebsqueday
reemplazo(Search&Replace).
EntendiendolasExpresionesRegulares
Comosehabadichoanteriormente,enunaexpresinregularencontramosliteralesymetacaracteres.Alanalizarunaexpresinregular,lo
primeroquetenemosquehaceresdeterminarquelementossonliteralesyquelementossonmetacaracteres(tambinllamadosoperadores).
ExisteunalargalistademetacaracteressoportadosporOracle.Noeslaintencinestudiarlosatodosenestedocumento.Acontinuaciniremos
viendoalgunos.
Elmetacaracterpunto(.)
Elmetacaracterpuntocoincideconcualquiercarcter.Porejemplo,enlaexpresinregular
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 2/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
ca.a
Paraqueunacadenadecaracterescoincidacondichopatrn:
Debeestarelliteral'c'.
Ledebeseguirelliteral'a'
Ledebeseguirunysolamenteuncarctercualquiera.
Ledebeseguirelliteral'a'
Enlaexpresinregularencontramos3literalesyelmetacaracterpunto.Analicemoslassiguientescadenasyveamoscualescoincidenconel
patrnbuscadoyculesno.
casa Si Coincidenlosliteralesyenlaposicindeloperadorpuntoapareceslouncarcter
cana Si Coincidenlosliteralesyenlaposicindeloperadorpuntoapareceslouncarcter
cara Si Coincidenlosliteralesyenlaposicindeloperadorpuntoapareceslouncarcter
canta No Enlaposicindelpuntoaparecemsdeuncarcter
pala No Elliteral'p'enlaprimerposicinnorespetaelliteralcdefinidoenlaexpresinregular
Elmetacaractersuma(+)
Elmetacaractersumacoincideconunaomsocurrenciasdelasubexpresinqueloprecede.Porejemplo,analicemoslaexpresinregular
cas+a
Paraqueunacadenadecaracterescoincidacondichopatrn:
Debeestarelcarcter'c'
Ledebeseguirelcarcter'a'
Ledebeseguirunaomasocurrenciasdelcarcter's'
Ledebeseguirelcarcter'a'
VemosnuevamentetresliteralesyelmetacaracterSuma.Busquemoselpatrnenlassiguientescadenasyveamoslascoincidencias.
cassa Elsmboloms(+)esprecedidoporlasubexpresin"s".Porlotantotodaslascadenasquetienenunaoms"s"
cassssa Si enapartirdelatercerposicinyrespetanelrestodelosliterales,coincidenconelpatrnrepresentadoenla
cassssssssa expresinregular.
Caa No Elpatrndefinidorequierealmenosunasenlatercerposicin
Lasa No Norespetatodoslosliteralesdelaexpresinregular
Tassa No Norespetatodoslosliteralesdelaexpresinregular
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 3/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
Elmetacaracterasterisco(*)
Coincideconceroomsocurrenciasdelasubexpresinqueleprecedealasterisco.Analicemoslaexpresin:
cas*a
Paraqueunacadenadecaracterescoincidacondichopatrn:
Debeestarelcarcter'c'Ledebeseguirelcarcter'a'Ledebeseguirceroomasocurrenciasdelcarcter's'.Esdecirqueelcarcter's'
puedeonoestar.Ledebeseguirelcarcter'a'
Analicemosqupasaconlasmismascadenasdecaracteresdelejemploanterior:
Casa Elsmboloasterisco(*)esprecedidoporlasubexpresin"s".Porlotantotodaslascadenasquetienenceroo
cassssa Si ms"s"apartirdelaterceraposicinyrespetanelrestodelosliterales,coincidenconelpatrnrepresentadoen
cassssssssa laexpresinregular.
caa Si Elpatrnaceptalanoexistenciadelcarcter's'enlaterceraposicin.
lasa No Norespetatodoslosliteralesdelaexpresinregular
tassa No Norespetatodoslosliteralesdelaexpresinregular
Elmetacaracter[char...]
Coincideconunasolaocurrenciadealgunodeloscaracteresdelalistaentrecorchetes.Enlalista,todosloscaracteressontomadoscomo
literalesexceptoalgunoscaracteresquesoninterpretadoscomometacaracteres.Aqunoslimitaremosamencionarelmetacaracter''para
representarrangosdecaracteres.Analicemoslasiguienteexpresinregular:
ca[snt]a
Paraqueunacadenadecaracterescoincidacondichopatrn:
Debeestarelcarcter'c'
Ledebeseguirelcarcter'a'
Ledebeseguirunoysolamenteunodelossiguientescaracteres:'s','n'o't'.
Ledebeseguirelcarcter'a'
casa Si Coincidenlosliteralesyenlaposicindeloperadorapareceslouncarcteryesdelosdelalista
cana Si Coincidenlosliteralesyenlaposicindeloperadorapareceslouncarcteryesdelosdelalista
cata Si Coincidenlosliteralesyenlaposicindeloperadorapareceslouncarcteryesdelosdelalista
cara No Enlaposicindeloperadorapareceunsolocarcterperonoestenlalista
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 4/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
canta No Sibienenlaposicindeloperadoraparecenliteralesdelalistasonmsdeuno
pasa No Norespetaelprimerliteraldelalista
Comosedijoanteriormente,enlalistasepuedeutilizarelmetacaracterrango''.Haciendousodeestemetacaracterlasiguientelistade
caracteres:
[123456789]
Podemosexpresarlacomo
[19]
Ylasiguientelistadecaracteres
[abcdef]
Podemosexpresarlacomo
[af]
Analicemosahoralasiguienteexpresinregular:
a[37][fi]9
Paraqueunacadenacoincidaconelpatrn:
Debetenerelliteral'a'
Ledebeseguirunnumerode3a7.Esdecir:3,4,5,67.
Ledebeseguirunaletradelafalai.Esdecir'f','g','h'o'i'
Ledebeseguirelnumero9
Coincidenlosliteralesyenlaposicindelosoperadoresaparecenliteralesincluidosenlosrangosespecificadosen
a3h9 Si
elpatrndelaexpresinregular.
a33f9 No Enlaposicindelprimeroperadoraparecemsdeuncaracter
a3z9 No La'z'noestincluidaenelrangodelsegundooperador
Elmetacaracter[^char...]
Elsombrerito(^)queprecedealalistaindicaquelosliteralesquelesiguennodebenestarenlacadenadecaracteresparaqueseproduzcauna
coincidencia.Veamos,
ca[^snt]a
Paraqueunacadenadecaracterescoincidacondichopatrn:
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 5/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
Debeestarelcarcter'c'
Ledebeseguirelcarcter'a'
Ledebeseguirunoysolamenteuncarcterquenoseani's'ni'n'ni't'.
Ledebeseguirelcarcter'a'
casa No Coincidenlosliteralesyenlaposicindeloperadorapareceuncarcterdelosnegadosenlalista
cana No Coincidenlosliteralesyenlaposicindeloperadorapareceuncarcterdelosnegadosenlalista
cata No Coincidenlosliteralesyenlaposicindeloperadorapareceuncarcterdelosnegadosenlalista
cara Si Coincidenlosliteralesyenlaposciondeloperadorapareceuncarcterquenoestenlalistadeliteralesnegados.
canta No Enlaposicindeloperadoraparecemsdeunvalor
para No Norespetaelprimerliteraldelalista
Elmetacaractersubexpresin(expr)
Consideraatodalaexpresinentreparntesiscomounaunidad.Laexpresinpuedeserunasimplecadenadeliteralesounaexpresin
complejaconteniendootrosmetacaracteres.Analicemoslasiguienteexpresinregular
chau(hola)*chau
Ahoraelasteriscoprecedealaexpresin
hola
Elasteriscoindicaquelaexpresin
hola
Puedeaparecerceromsveces
chauchau Si Coincidenlosliteralesylaexpresin'hola'aparececeroveces
chauholachau Si Coincidenlosliteralesylaexpresin'hola'apareceunavez,esdecirceroomsveces.
chauholaholachau Si Coincidenlosliteralesylaexpresin'hola'aparecedosveces,esdecirceroomsveces.
holachau No Noaparecenelliteralchau'queprecedealhola
chau No Noapareceelliteral'chau'queprecedealhola
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 6/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
Elmetacaracterdeanclajedeprincipiodelnea(^)
Coincideconelprincipiodelneayeloperadorestrepresentadoconelcaractersombrerito(^).Enlaexpresinregular
^hola
Losliteralesquecomponenlapalabra'hola'debenestaraliniciodelalneaparaqueseproduzcalacoincidenciaconelpatrnexpresado.
hola Si Losliteralesquecomponenlapalabra'hola'estnaliniciodelalnea
chauhola No Lalneanocomienzaconlosliteralesqueconformanlapalabra'hola'
holachau Si Losliteralesquecomponenlapalabra'hola'estnaliniciodelalnea
holahola Si Losliteralesquecomponenlapalabra'hola'estnaliniciodelalnea
Elmetacaracterdeanclajedefindelnea($)
Coincideconelfinaldelneayeloperadorestrepresentadoconelcarcterpesos($).Enlaexpresinregular
hola$
Losliteralesquecomponenlapalabra'hola'debenestaralfinaldelalneaparaqueseproduzcalacoincidenciaconelpatrnexpresado.
Hola Si Losliteralesquecomponenlapalabra'hola'estnalfinaldelalnea
chauhola Si Lalneafinalizaconlosliteralesqueconformanlapalabra'hola'
holachau No Losliteralesquecomponenlapalabra'hola'noestnalfinaldelalnea
holahola Si Losliteralesquecomponenlapalabra'hola'estnalfinaldelalnea
Elmetacaracterdeescape(\)
Precediendoaunmetacaracterconelsmbolodeescape,elmetacaracterserinterpretadocomounliteral.Eldoblecarcterdeescape(\\)
permiteconsideraralcarcterdeescapecomoliteral.
Enlaexpresinregular
hola\*
hola No Faltaelliteral'*'quesigueliteral'a'
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 7/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
Hola* Si Coincidentodoslosliterales
hol* No Faltanlosliterales'a'y*
ConstruyendoExpresionesRegularescomplejas
Hastaaquhemosvistoalgunosdelosmetacaracteresqueseusanconmsfrecuencia.Combinandovariosdeestosmetacaracteresenunasola
expresinregular,podemoshacerconstruccionesmscomplejasymuypoderosas.Analicemoslasiguienteexpresinregularenlaque
encontramosvariosmetacaracteres
^hola[09]*chau[^a]+$
Hagamosundesglosedelaexpresinregular:
^hola Alprincipiodelalneadebeestarlapalabra'hola'
[09]* Luegodelapalabra'hola'debenaparecerceroomasdgitosdel0al9
chau Luegodebeaparecerelliteral'chau'
[^a]+$ Lalneadebecontinuarhastaelfinalconunoomscaracteresdistintosde'a'
Busquemoselpatrnenalgunascadenasdecaracteres
Comienzaconeltexto'hola'.Lesiguenvariosdgitosentre0y9.Lesigueelliteral'chau'yfinalizaconal
hola123chaub Si
menosunaletradistintade'a'.
Comienzaconeltexto'hola'.Noaparecendgitosdel0al9(elasteriscoindicaqueestoesaceptadoparaque
holachauc Si
hayacoincidencia).Luegoapareceelliteral'chau'ysefinalizaconunaletradistintade'a'
hola0chaua No Finalizaconunaa
UsodelasExpresionesRegularesenOracle
Hastaaquhemosvistounpocodeteorayalgunosejemplosprcticosparaconoceryaprenderunpocoacercadelasexpresionesregulares.
Pero,cmopodemoshacerusodeesteconocimientoadquiridoenunabasededatosOracle?
Apartirdelaversin10gOraclenosofreceungrupodenuevasfuncionesycondicionesparapodermanejarexpresionesregularesenel
lenguajeSQL:
CondicinquesepuedeutilizarenlaclusulaWHEREdeunasentenciaSQLSELECTyquepermiteretornar
REGEXP_LIKE
aquellasfilasquecoincidenconelpatrnespecificadoenunaexpresinregular.
REGEXP_COUNT Funcinquepermitecontarelnmerodevecesqueunpatrnapareceenunacadenadecaracteres.
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 8/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
REGEXP_INSTR Funcinquepermitedeterminarlaposicindeiniciodeunpatrnespecficoenunacadenadecaracteres.
Funcinquepermitehacerbsquedayreemplazoenunacadenadecaracteresutilizandoexpresionesregularespara
REGEXP_REPLACE
labsqueda.
Funcinparaextraerdeunacadenaunasubcadenadecaracteresquecoincidanconunpatrnespecificadoenuna
REGEXP_SUBSTR
expresinregular.
Veamosalgunosejemplosdeimplementacindeestascondicionesyfuncionescombinadasconelusodeexpresionesregulares.
LacondicinREGEXP_LIKEessimilaralacondicinLIKEpero,adiferenciadelLIKE,utilizapatronesbasadosenexpresionesregularesparala
bsquedadecoincidenciasenlascadenasdecaracteresanalizadas.
Enelsiguienteejemplo,vemosunatabladeempleadoscuyosnombresfueronmigradosdeunsistemalegacy.Enmuchoscasoselnombreha
quedadoseparadodelapellidoporvariosespaciosenblanco:
SQL>selectnombrefromempleados;
NOMBRE
FernandoGarcia
MarceloBurgos
MarceloOchoa
GerardoTezza
ClarisaMamanOrfali
RodolfoPajueloQuispe
6rowsselected.
ElnicocasodeunsoloespacioentreelnombreyelapellidoeseldeClarisaMamanOrfali.Veamoscmopodemosconstruirunqueryque
detecteaquellasfilasenquehayadosomsespaciosseparandonombresdeapellidos.
SQL>selectnombre
2fromempleados
3whereregexp_like(nombre,'[][][]*');
NOMBRE
FernandoGarcia
MarceloBurgos
MarceloOchoa
GerardoTezza
RodolfoPajueloQuispe
Corrijamosestasituacindejandounsoloblancodeseparacinendondehaydosomsespaciosenblanco.
SQL>updateempleados
2setnombre=regexp_replace(nombre,'[][][]*','')
3whereregexp_count(nombre,'[][][]*')>0;
5rowsupdated.
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 9/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
Veamoscmoquedolatablaluegodelacorreccin
SQL>selectnombrefromempleados;
NOMBRE
FernandoGarcia
MarceloBurgos
MarceloOchoa
GerardoTezza
ClarisaMamanOrfali
RodolfoPajueloQuispe
6rowsselected.
Bastantebien.SalvoelcasodeMarceloOchoa,endondenosquedunespacioenblancoalprincipiodelalnea.Eliminemosentonceslos
espaciosenblancoqueestnalprincipiodelalnea.
SQL>updateempleados
2setnombre=regexp_replace(nombre,'^')
3whereregexp_count(nombre,'^')>0
4/
1rowupdated.
SQL>selectnombrefromempleados;
NOMBRE
FernandoGarcia
MarceloBurgos
MarceloOchoa
GerardoTezza
ClarisaMamanOrfali
RodolfoPajueloQuispe
6rowsselected.
Enesteotroejemplovemosunatabladeimpuestosenlaquealmacenamosuncdigodeidentificacintributarianumricoyquedeberespetar
elsiguienteformato:
999999999999
SQL>selectcuitfromimpuestos;
CUIT
20201981239
10431123458
1221239879
8883838382
aa75212456x
Busquemosaquelloscdigosquenoestnrespetandoelformatorequerido:
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 10/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
selectcuit
fromimpuestos
wherenotregexp_like(cuit,'[09][09][09][09][09][09][09][09][09][09][09]')
CUIT
1221239879
8883838382
aa75212456x
Afindeevitarquelatablasigaadmitiendocdigosquenorespetanelformato,podemoscrearunaconstraintquefuerceelingresodecdigos
querespetenelformato.
altertableimpuestos
addconstraintc_cuit
check(regexp_like(cuit,'[09][09][09][09][09][09][09][09][09][09][09]'))
enablenovalidate
/
Tablealtered.
Veamosquocurrealingresarnuevasfilasalatabledeimpuestos
SQL>insertintoimpuestos(cuit)values('20179798662');
1rowcreated.
SQL>insertintoimpuestos(cuit)values('1x179798662');
insertintoimpuestos(cuit)values('1x179798662')
*
ERRORatline1:
ORA02290:checkconstraint(SYS.C_CUIT)violated
SQL>insertintoimpuestosvalues('12888122812');
insertintoimpuestosvalues('12888122812')
*
ERRORatline1:
ORA02290:checkconstraint(SYS.C_CUIT)violated
ProfundizandoelconocimientoyusodelasexpresionesregularesenOracle
HemosvistovariosejemplosparademostrarelpotencialyutilidadquenosofrecenlasexpresionesregularesenlasbasesdedatosOracle.
Existenmuchosmsmetacaracteresquenohemosmencionadoaqu.Lasfuncionestampocolashemosvistoenprofundidadhayms
argumentosparahacerbsquedasqueignorenmaysculasyminsculas,etc.Paraseguirprofundizandoeltema,aqudejamosalgunoslinksde
inters:
UsingRegularExpressionsinDatabaseApplications
OracleDatabaseAdvancedApplicationDeveloper'sGuide
11gRelease2(11.2)
PartNumberE2551804
http://docs.oracle.com/cd/E11882_01/appdev.112/e25518/adfns_regexp.htm#ADFNS1003
IntroducingOracleRegular
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 11/12
29/2/2016 Artculos:SQL&PL/SQLIntroduccinalusodelasExpresionesRegularesenunaBasedeDatosOracle
Expressions
AnOracleWhitePaper
Author:PeterLinsley
http://www.oracle.com/technetwork/database/focusareas/applicationdevelopment/twpregularexpressions133133.pdf
RegularExpressions.info
ThePremierwebsiteaboutRegularExpressions
http://www.regularexpressions.info/
PublicadoporFernandoGarca.OracleAce.
Emailthispage PrinterView
http://www.oracle.com/technetwork/es/articles/sql/expresionesregularesbasededatos1569340esa.html 12/12