Ruby para principiantes: Expresiones regulares (1ra parte)
Ruby es uno de los lenguajes más populares usados en la web. En este artículo aprenderemos algunas de las expresiones regulares, además de toda la información básica que es necesario saber para conocer esta herramienta en profundidad.
Si ya estás familiarizado con las expresiones regulares, te alegrará saber que la mayoría de la sintaxis de Ruby es similar a lo que ya hemos visto en PHP y JavaScript.
Como todo en Ruby, las expresiones regulares son objetos regulares: son consideradas instancias en la clase Regexp. De todas maneras, usualmente crearás una expresión regular con una sintaxis estándar como esta:
/myregex/ /\(\d{3}\) \d{3}-\d{4}/
Para empezar, la manera más simple es aplicarlo a un string y ver si existe una coincidencia. Ambos strings y los objets regexp tienen un método de comparación que funciona así:
"(123) 456-7890".match /\(\d{3}\) \d{3}-\d{4}/ /\(\d{3}\) \d{3}-\d{4}/.match "(123) 456-7890"
Ambos ejemplos coinciden, y ahora obtendremos una instancia de MatchData de regreso. Ya que el objeto MatchData será evaluado con true, puedes utilizar el método match en sentencias condicionales, y sólo ignorar cuando obtienes un valor de retorno.
Hay otro método que puedes usar para comparar regexp con strings: es =~ . Recuerda que los operadores son métodos en Ruby. Este método devolverá nil cuando no haya coincidencia. Sin embargo, si sí la hay, devolverá la posición numérica del string donde la coincidencia comienza. Ambos strings y regexps tienen =~.
"Ruby For Newbies: Regular Expressions" =~ /New/ # => 9
Las expresiones regualres son más útiles cuando nos permiten cosechar algo de información. Esto se hace usualmente envolviendo ciertas parte de la expresión regular en paréntesis. Supongamos que queremos comparar un nombre, apellido y ocupación en un string, donde el string está formateado de esta manera:
str1 = "Joe Schmo, Plumber" str2 = "Stephen Harper, Prime Minister"
Para obtener los tres datos, creamos este regexp:
re = /(\w*)\s(\w*),\s?([\w\s]*)/
Esto compara cualquier número de caracteres de palabra, un espacio en blanco opcional, cualquier número de caracteres de palabra, una coma, un espacio en blanco opcional, y cualquier número de caracteres o espacio en blanco.
Luego, ejecutaremos esto:
match1 = str1.match re match2 = str2.match re
Eso es todo por hoy. En la segunda parte de este artículo, veremos más en detalle los objetos Matchdata y otros usos de las expresiones regulares.
¡Hasta la próxima!
Fuente original del artículo: Net Tuts +
Deja una respuesta