Mostrando entradas con la etiqueta Expresiones Regulares. Mostrar todas las entradas
Mostrando entradas con la etiqueta Expresiones Regulares. Mostrar todas las entradas

lunes, 12 de noviembre de 2012

Cuando SUBSTR no sirve buenas son las expresiones regulares

[Oracle / SQL] SUBSTR es una función muy útil para recortar cadenas de datos. Pero hay ciertos casos en que se queda corta. Por ejemplo, si necesitas solamente obtener el usuario de un correo electrónico dejando fuera el dominio y la arroba.

El largo de los nombres de usuario varia entonces se debe pensar en algo mas elaborado o ir al grano con las expresiones regulares.

REGEXP_SUBSTR permite extraer una cadena que cumple con una expresión regular.

Ejemplo de uso:
select REGEXP_SUBSTR('m-donoso_2007@dominio.cl','[_a-z0-9-]*') from dual;

Donde
  • m-donoso_2007@dominio.cl es el correo (fake por cierto).
  • [_a-z0-9-]* Es la expresión regular que toma solo los caracteres indicados símbolos -, _, letras minúsculas y números tantas veces como aparezcan en la cadena. Por lo que deja fuera todo lo que esta después de la arroba.
El resultado de arriba da:
m-donoso_2007



Mas información
http://j.gs/1aEh

martes, 24 de julio de 2012

Buscando un patrón con VIM (una aguja en un pajar)

Me pasaron un archivo de texto, desde donde debo obtener un numero de teléfono móvil o celular chileno. El punto es que no me dijeron ni me quisieron decir desde que columna debía obtener ese dato. Y el archivo contiene mas de una columna con números que pudieran ser.

¿Como soluciono eso? Fácil, con VIM y expresiones regulares. Busco un patrón dentro del archivo que corresponda con un numero de móvil chileno que contiene básicamente este patrón:
56900000000

Donde
  • 56 Numero de País
  • 9 No se con certeza, a que corresponde  
  • y Ocho dígitos que corresponden al celular.
Abro el archivo con VIM y escribo lo siguiente:


Estoy diciendo con eso, que busco un texto que comience con 569 y que después de eso contenga 8 números.

Y VIM resalta los números que corresponden a ese patrón, por lo que ya no me queda duda donde obtener el teléfono.


Para buscar desde otra herramienta que no sea VI/VIM. La expresión regular  varia un poco. Descartamos el símbolo / (que indica a VI / VIM que busque) y la expresión queda como sigue: