Expresiones Regulares.
En las expresiones regulares podemos encontrar literales y metacaracteres. Una manera fácil de entederlo es ver primero distinguirlos. Tenemos que tener claro que los metacaracteres son también llamados operadores.
Os voy a poner un listado de algunos, aunque Oracle soporta bastantes.
Entender esto bien os servirá no sólo para Oracle, si no para otros muchos lenguajes.
Metacaracteres.
Punto (.)
Coincide con cualquier carácter, eso si, sólo con un carácter.
Si yo tengo algo como.
ho.a
– La primera posición de ocurrencia deber ser h
– Seguido de o
– La tercera posición puede ser cualquier carácter.
– La cuarta posición deber ser a
Suma (+)
Coincide con una O MAS ocurrencias de la subexpresión que va delante.
ho+a.
– La primera posición de ocurrencia deber ser h
– Seguido de o, una o varias veces
– Después aparacer la a
Por ejemplo: hooooooooooooooooooooa
Asterisco (*)
Coincide con cero o más ocurrencias de la subexpresión que le precede al asterisco.
ho*a.
– Debe estar el carácter h, luego puede o no puede estar varias veces el carácter o. Y tiene que seguirle la ‘a’.
Por ejemplo hoooooa valdría pero también hoa y ha.
Corchete [char…]
Aquí se busca que coincida con UNA SOLA ocurrencia de la lista que hay entre los corchetes. Tenemos la opción de poder poner caracteres
y metacaracteres.
Por ejemplo ga[stk]o
Empezamos por que tenga el carácter g, seguido de a y despues SÓLO UNO de los carácteres entre corchetes [stk] seguido de una o.
Coincidiría gato y gaso por ejemplo. No coincidiria gasto ( hay más de un carácter del grupo)
Ahora dentro de estos corchetes podemos utilizar otros metacaracteres.
Guión (-)
Con él podremos establecer un rango.
Pongamos que queremos que uno de los carácteres esté entre [abcdef], podríamos ponerlo así o directamente [a-f].
Lo mismo sucedería con los números [123456789], que podríamos expresar así [1-9]
p[b-e][4-6]prueba
La cadena tiene que tener un literal p seguido de una letra que puede ser b,c,d ó e. Luego continuamos con un número 4,5 ó 6 y luego prueba.
Algo así pc5prueba, nos valdría. pf7prueba, no valdría ya la segunda letra y el tercer número no están en el rango.
El sombrerito (^)
Si lo ponemos seguido de una lista, estamos indicando los caracteres que NO DEBEN aparecer, para que se produzca una coincidencia.
Por ejemplo ga[^stk]o
Empezamos por que tenga el carácter g, seguido de a y despues NINGUNO de los carácteres entre corchetes [stk] seguido de una o.
Entonces encontrariamos coincidencia con gaso, pero por ejemplo gato, no entrarían.
La subexpresión (expr)
Esto considera que la expresión entre paréntesis tiene que aparecer o no tal y como está definida.
Considera a toda la expresión entre paréntesis como una unidad. La expresión puede ser una simple cadena de literales o una expresión compleja conteniendo otros metacaracteres. Analicemos la siguiente expresión regular
aparezco(puede)*aqui
Como habeís visto arriba si pongo un *, quiere decir que la cadena (puede) aparece o no.
Es decir, aquí habría concordancia con aparezcopuedeaqui, aparezcoaqui, aparecezcopuedepuedeaqui
Pipe (|)
El símbolo pipe indica UNO U OTRO. Si tenemos [v|b]aca
Coincidiría con vaca y con baca.
Y tendríais un montón de combinaciones posibles.
Aquí os dejo otro link donde podéis aplicar lo que hemos visto con las funciones de Oracle
REGEXP ORACLE