Utilizando Expresiones Regulares (regexp) en Ruby Pt1

Estándar

Las expresiones regulares (regexp) nos proveen de poderosas formas de encontrar y modificar patrones en cadenas de texto, no solo en pequeñas cadenas sino también en archivos de disco.

Una expresión regular toma la forma de un patrón el cual es comparado con una cadena. Las expresiones regulares también nos los medios por los cuales podemos modificar cadenas, por ejemplo: podríamos cambiar caracteres de minúsculas a mayúsculas, podríamos reemplazar cada ocurrencia de una palabra por otra, también podríamos leer un archivo de código y crear un archivo de documentación al extraer todos los comentarios y escribirlos en un archivo aparte.

En el siguiente ejemplo se muestra las tres formas de crear una expresión regular y como utilizarlas para la busqueda de patrones en una cadena de texto, en este caso mi nombre:


#formas de crear una expresion regular
re1 = Regexp.new('ton')
re2 = /ton/
re3 = %r{ton}

#se regresa la posicion donde se encuentra la expresion regular
puts re1 =~ "Luis Antonio"
puts re2 =~ "Luis Antonio"
puts re3 =~ "Luis Antonio"

system "pause"

Veamos otros ejemplos:


#usar un grupo de inspeccion para determinar si una cadena contiene alguna vocal
puts /[aeiou]/ =~ "esta es mi casa"
puts /[aeiou]/ =~ "1234567890"

#usar el cuantificador $ para determinar si la cadena termina con cierto patron
puts /casa$/ =~ "esta es mi casa"
#combinar un grupo de inspeccion y el cuantificador $ para determinar si la cadena termina con
#algun numero
puts /[0-9]$/ =~ "Viajare a Brasil en el 2018"

#usar el cuantificador ^ para determinar si la cadena comienza con 123
puts /^123/ =~ "1234567890"
#usar el cuantificador ^ para determinar si comienza por un numero
puts /^[0-9]/ =~ "2012. Predicciones Mayas"
#usar el cuantificador ^ para determinar si comienza por una letra (minuscula)
puts /^[a-z]/ =~ "Hola Mundo"
#usar el cuantificador ^ para determinar si comienza por una letra (mayusculas)
puts /^[A-Z]/ =~ "hola Mundo"

system "pause"

Les recomiendo ir introduciendo cada instrucción en la consola (IRB) para que puedan apreciar su funcionamiento.

Estos han sido ejemplos muy sencillos de como buscar patrones dentro de cadenas, realmente se pueden hacer cosas más interesantes, potentes y útiles usando las expresiones regulares las cuales veremos en los siguiente tutoriales utilizando Ruby.

clsString – Clase en VBA/Excel para la gestión de cadenas de caracteres

Estándar

Un secreto importante de los programadores de éxito es que nunca pierden tiempo escribiendo el mismo código dos veces. Tienen pequeñas o incluso grandes partes de código que utilizan una y otra vez. Es por ello que desarrolle una clase que me brindara todas las funciones que utilizo en la mayor parte de mis desarrollos de software,  una clase para el manejo y gestión de cadenas en VBA/Excel. Esta nueva clase viene a sustituir a la que habia desarrollado previamente en este post.

Hace unas semanas decidí rediseñar nuevamente dicha clase a la cual nombre como clsString y que está totalmente inspirada en el en el objeto String que proporciona el lenguaje de programación Ruby. Continuar leyendo

Las 10 funciones de texto más esenciales

Estándar

Uno de los puntos fuertes de Excel es que incluye una cantidad de funciones prefabricadas que nos ahorraran gran cantidad de tiempo y esfuerzo en la realización de cálculos y operaciones. Excel incluye más de 300 funciones (estadísticas, financieras, lógicas, ingeniería, texto, etc).

Hoy quiero centrarme en aquellas para el procesamiento de texto (sobre todo aquellas que me han sido de mayor utilidad).

  1. REPETIR.             Devuelve un texto un número determinado de veces
  2. NOMPROPIO    Devuelve la primera letra de cada palabra en mayúscula y el resto en minúscula
  3. MINUSC              Devuelve todo el texto en minúsculas
  4. MAYUS                 Devuelve todo el texto en mayúsculas
  5. LARGO                 Devuelve la cantidad de caracteres que conforman una cadena de texto (incluyendo espacios)
  6. IZQUIERDA         Devuelve un numero especificado de caracteres, empezando desde la izquierda
  7. DERECHA            Devuelve un numero especificado de caracteres, empezando desde la derecha
  8. CONCATENAR    Devuelve la combinación de cadenas de caracteres
  9. ESPACIOS            Devuelve una cadena, eliminando los espacios iniciales y finales de una cadena de caracteres
  10. HALLAR               Devuelve el número de caracteres en el cual se encuentra una cadena (leyendo de izquierda a derecha)

Repito… estas no son todas las funciones de texto, pero si las que me han sido de mayor utilidad para resolver problemas reales y más  aún cuando he trabajo en conjunto con ellas.

Dejo aquí un breve archivo con algunos sobre su uso y funcionamiento:  ejemplos de funciones de texto