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.

Anuncios

Programación en Ruby en 5 minutos – Pt 1

Estándar

Hoy en día muchas de las personas se encuentran inmersas en varios asuntos y actividades y quizás apenas tienen tiempo para lo más esencial, es por ello que me decidí a desarrollar pequeños tutoriales o recetas de lo que se puede hacer con un lenguaje tan fabuloso como lo es Ruby. No esperen cosas avanzadas y código perfecto, pero si cosas prácticas, sencillas y fáciles de asimilar.

Espero que estos tutoriales sean de interés y sea el primero de muchos mas…

Utilización de VBA/Excel y Ruby en Inteligencia Artificial (Pt 1)

Estándar

Creo que este será el primero de muchos artículos, en si hace algunos años que me topé con un libro: “Utilización de C en Inteligencia Artificial” y debido al trabajo y mala gestión de mis horarios no he podido leerlo al 100.

Hoy en día sigo creyendo que C es un magnifico lenguaje, pero he de reconocer que ya no me parece un lenguaje tan practico por lo menos no en el ámbito en el que me desenvuelvo, asi que he decido leerme el libro e implementar los ejemplos del libro en VBA y Ruby que estoy seguro serán más fáciles de entender y codificar, ya que ambos lenguajes cuentan con buenos mecanismos para crear estructuras complejas de datos de manera práctica y sencilla.

Los temas que cubre el libro son:

  • Resolución de problemas: Búsqueda de soluciones
  • Sistemas Expertos
  • Procesamiento del lenguaje natural
  • Visión y reconocimiento de modelos
  • Robótica
  • Aprendizaje de las maquinas
  • Lógica e incertidumbre
  • Apariencia humana

Quizás algunos de estos temas no los llegue a tocar… y tarde algo de tiempo en publicar. Pero hare mi mejor esfuerzo por ser constante en los temas.

Conexión entre Ruby y una instancia en ejecución de Excel

Estándar

Anteriormente había mencionado como crear una instancia de Excel desde Ruby, añadir un libro y escribir algo de texto en las celdas de la hoja activa. En esta ocasión voy a hablar de cómo conectarse desde Ruby a una instancia de Excel en ejecución.

Veamos algo de código…


require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Add()
worksheet = workbook.Worksheets(1)
worksheet.Range("A1:D1").value = ["North","South","East","West"]
worksheet.Range("A2:B2").value = [5.2, 10]
worksheet.Range("C2").value = 8
worksheet.Range("D2").value = 20
range = worksheet.Range("A1:D2")
range.select
chart = workbook.Charts.Add
workbook.saved = true
excel.ActiveWorkbook.Close(0)
excel.Quit()

El código anterior crea una nueva instancia de Excel, la hace visible, agrega un libro, agrega unos datos a la hoja 1 y a partir de ellos crea grafico para luego cerrar el libro sin necesidad de guardarlo y cierra la instancia previamente creada. Este código si lo guardan como un script de Ruby, con la extensión “.rb” y lo ejecutan, será tan rápido que si parpadean no verán nada.

Pero habrá casos en los que haya que trabajar o procesar datos de un libro que ya se encuentra abierto y como hacer eso, bueno solo habría que cambiar una línea del código anterior, en donde se crea la instancia de Excel:


excel = WIN32OLE.new('Excel.Application')

la cual quedaría asi:


excel = WIN32OLE.connect('Excel.Application')

Con este cambio, Ruby no crea una instancia, sino que se conecta a la instancia de Excel en ejecución.

Aqui tienen un video para mas detalle al respecto: Ruby/Excel Tutorial 002

Video Tutorial Ruby 001

Estándar

Ruby es un lenguaje interpretado muy versátil y poderoso el cual nos brinda muchas ventajas y cual desde años despertó mi interés, incluso antes de incursionar en Python es por eso que voy a crear una serie de videos para ilustrar sus capacidades pero enfocadas al modelo de objetos de Excel.

Como saben trabajo como programador VBA/Excel considero que es mi fuerte ya que llevo más de 7 años de trabajo como programador VBA/Excel y considero que ruby es una herramienta para ampliar y brindar mayores posibilidades al desarrollo de soluciones con Excel, quizás en algunos tutoriales ilustre conceptos que son exclusivos de ruby, pero esto con el fin de sentar las bases del lenguaje y posteriormente poderlas aplicar sobre Excel.

No soy un programador experto en Python, ni un Ruby, tan solo soy un entusiasta en aprender nuevas cosas. Espero que esta serie de videos sean de su interés!

Ruby/Excel Tutorial 001 – Creando una instancial de Excel

Manipulando Excel con Ruby

Estándar

Esta vez estoy incursionando en la programación con el lenguaje de programación Ruby, al igual que Python se trata de un lenguaje de script (interpretado pero sumamente potente), según el creador de este lenguaje, Ruby tiene la característica de hacer divertida la programación para el programador entre otras cosas más…

En este post quiero mostrar como poder acceder a una instancia de Excel y poder manipularla. Para empezar tendremos que descargar la última versión de Ruby (si no me equivoco es la 1.9.2).

Una vez teniendo Ruby instalado,  abrimos la consola (ya saben que soy usuario de Windows, asi que no me odien por ello, jajaja) y escribimos lo siguiente:


Irb [enter]

Con eso llamamos al interprete, con lo cual nos aparecerá algo mo esto:


Irb(main):001:0>

Ahora a crear una instancia de Excel para ello escribimos:


require ‘WIN32OLE’ [enter]
app = WIN32OLE::new(‘excel.application’) [enter]
app.visible = true [enter]
app.workbooks.add [enter]
app.activeworkbook.activesheet.range(‘a1:a10’).value = “Hola desde Ruby” * 2 [enter]
app.displayalerts = false [enter]
app.quit [enter]

NOTA: Sean cuidadosos, ya que en Ruby se utilizan comillas simples (apostrofo) y comillas dobles al igual que en Python.

Y listo, eso es todo! Hemos visto como crear una instancia, hacer visible, crear un libro, asignar valores a las celdas y eliminar todo. Se trata de algo pequeño pero que nos permite ver los alcances de Ruby. El único punto malo es que en Ruby, desconozco si hay sentencia “with” como la de VBA, será cuestión de investigar.

Se puede utilizar Ruby para acceder al modelo de objetos de Excel y además combinar todo el poder que nos brinda este lenguaje de programación con sus objetos, mas adelante estaré publicando al respecto.

Saludos!