Quantcast
Channel: Oracle
Viewing all articles
Browse latest Browse all 1814

Blog Post: Expresiones regulares y listas de caracteres de igualación.

$
0
0
No me resulta fácil explicar cómo funcionan las listas de caracteres de igualación. Vayamos directamente con un ejemplo. A diferencia del “.” que iguala con cualquier caracter, las listas nos permiten “limitar” la igualación a una lista determinada. Con la siguiente expresión: x[abc]z Estoy indicando que solamente igualarán aquellas cadenas que contengan una “a”, o una “b” o una “c” entre la “x” y la “z”. Veamos: select texto, 'x[abc]z' regexp, case when regexp_like(texto, 'x[abc]z') then 'Hay coincidencia' else 'No hay coincidencia' end "COINCIDENCIA?" from prueba_regexp TEXTO REGEXP COINCIDENCIA? ----------------------------------- ------- ------------------- xz x[abc]z No hay coincidencia xaz x[abc]z Hay coincidencia xabz x[abc]z No hay coincidencia xbz x[abc]z Hay coincidencia xabcz x[abc]z No hay coincidencia xcz x[abc]z Hay coincidencia 6 rows selected. Nótese que es necesario “encerrar” la lista de igualación entre corchetes (“ [] ”). Algo interesante a destacar es que la “lista” puede transformarse en un “rango”: select texto, 'x[a-c]z' regexp, case when regexp_like(texto, 'x[abc]z') then 'Hay coincidencia' else 'No hay coincidencia' end "COINCIDENCIA?" from prueba_regexp TEXTO REGEXP COINCIDENCIA? ----------------------------------- ------- ------------------- xz x[a-c]z No hay coincidencia xaz x[a-c]z Hay coincidencia xabz x[a-c]z No hay coincidencia xbz x[a-c]z Hay coincidencia xabcz x[a-c]z No hay coincidencia xcz x[a-c]z Hay coincidencia 6 rows selected. Con el manejo de rangos podemos crear expresiones como: Que haya una letra (desde la “a” hasta la “z“) Que haya un número (desde el cero hasta el nueve) select texto, 'El numero [a-z]' regexp, case when regexp_like(texto, 'El numero [a-z]') then 'Hay coincidencia' else 'No hay coincidencia' end "COINCIDENCIA?" from prueba_regexp TEXTO REGEXP COINCIDENCIA? ------------------------------------- ------------------- El numero 2 El numero [a-z] No hay coincidencia El numero tres El numero [a-z] Hay coincidencia El numero 4 El numero [a-z] No hay coincidencia El numero cinco El numero [a-z] Hay coincidencia El numero 0 El numero [a-z] No hay coincidencia select texto, 'El numero [0-9]' regexp, case when regexp_like(texto, 'El numero [0-9]') then 'Hay coincidencia' else 'No hay coincidencia' end "COINCIDENCIA?" from prueba_regexp TEXTO REGEXP COINCIDENCIA? ---------------- ---------------- ------------------- El numero 2 El numero [0-9] Hay coincidencia El numero tres El numero [0-9] No hay coincidencia El numero 4 El numero [0-9] Hay coincidencia El numero cinco El numero [0-9] No hay coincidencia El numero 0 El numero [0-9] Hay coincidencia Otro metacaracter interesante que podemos usar en las listas de caractares de igualación es el metacaracter de no igualación ( ^ ). Con el manejo de listas, rangos y el metacaracter de no igualación podemos crear expresiones como: Que no haya una letra (desde la “a” hasta la “z“) Que no haya un número (desde el cero hasta el nueve) select texto, 'El numero [^a-z]' regexp, case when regexp_like(texto, 'El numero [^a-z]') then 'Hay coincidencia' else 'No hay coincidencia' end "COINCIDENCIA?" from prueba_regexp TEXTO REGEXP COINCIDENCIA? --------------------- ---------------- ------------------- El numero 2 El numero [^a-z] Hay coincidencia El numero tres El numero [^a-z] No hay coincidencia El numero 4 El numero [^a-z] Hay coincidencia El numero cinco El numero [^a-z] No hay coincidencia El numero 0 El numero [^a-z] Hay coincidencia select texto, 'El numero [^0-9]' regexp, case when regexp_like(texto, 'El numero [^0-9]') then 'Hay coincidencia' else 'No hay coincidencia' end "COINCIDENCIA?" from prueba_regexp TEXTO REGEXP COINCIDENCIA? --------------------- ---------------- ------------------- El numero 2 El numero [^0-9] No hay coincidencia El numero tres El numero [^0-9] Hay coincidencia El numero 4 El numero [^0-9] No hay coincidencia El numero cinco El numero [^0-9] Hay coincidencia El numero 0 El numero [^0-9] No hay coincidencia ¿Verdad que las expresiones regulares son una herramienta potente? Nos vemos!

Viewing all articles
Browse latest Browse all 1814

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>