Expresiones Regulares en Ruby

Las expresiones regulares, también conocidas como regex, son patrones que se utilizan para buscar, modificar y manipular texto en Ruby. Son una herramienta poderosa para trabajar con datos textuales de forma eficiente y precisa.

Creación de expresiones regulares: Link to heading

  • Se definen entre dos barras diagonales (/).
  • Pueden contener una combinación de caracteres especiales y literales.
  • Los caracteres especiales tienen un significado predefinido dentro de la expresión regular.

Caracteres básicos Link to heading

Expresión significado
. (Punto): Coincide con cualquier carácter individual (excepto nueva línea).
[] (Corchetes): Rango de caracteres. Ejemplo: [a-z] coincide con cualquier letra minúscula de la a a la z.
\w (Letra o número): Coincide con letras, números y guion bajo (_).
\W (No letra o número): Coincide con cualquier carácter que no sea letra, número ni guion bajo.
\s (Espacio en blanco): Coincide con espacios, tabulaciones, retornos de carro y saltos de línea.
\S (No espacio en blanco): Coincide con cualquier carácter que no sea un espacio en blanco.
\d (Dígito): Coincide con cualquier dígito del 0 al 9.
\D (No dígito): Coincide con cualquier carácter que no sea un dígito del 0 al 9.

Metacaracteres especiales Link to heading

Expresión significado
^ (Inicio): Coincide con el inicio de la cadena.
$ (Fin): Coincide con el final de la cadena.
\b (Borde de palabra): Coincide con el inicio o el final de una palabra.
* (Cero o más): Repite el carácter que lo precede cero o más veces.
+ (Uno o más): Repite el carácter que lo precede una o más veces.
? (Cero o uno): Repite el carácter que lo precede cero o una vez.
| (Alternativa): Coincide con cualquiera de las expresiones que la preceden o la siguen.
() (Agrupación): Agrupa una expresión para tratarla como una sola unidad.
{m,n} (Repetición específica): Repite el carácter o grupo que le precede un mínimo de m veces y un máximo de n veces.

Ejemplo: Link to heading

is_gmail_regex = /\w+@gmail.com/

Coincidencia de patrones: Link to heading

  • Se puede usar el método match para verificar si un string coincide con una expresión regular.
  • El método match devuelve un objeto MatchData si hay una coincidencia, o nil si no la hay.

Ejemplo: Link to heading

"juan@gmail.com".match(is_gmail_regex) # => <MatchData "juan@gmail.com">
"juan@gmail".match(is_gmail_regex) # => nil

Clases de caracteres: Link to heading

  • Existen diferentes clases de caracteres para simplificar la escritura de expresiones regulares.

Ejemplo: Link to heading

number_regex = /\d+/
"21354".match(number_regex) # => <MatchData "21354">
"texto".match(number_regex) # => nil

Cuantificadores: Link to heading

  • Se utilizan para indicar la cantidad de veces que un carácter o patrón debe repetirse.

Ejemplo: Link to heading

# busca una palabra seguido de un espacio y despues busca una letra
/\w+ \w/ =~ "Hola mundo" # => 0

# busca una palabra seguida de dos o mas espacios y luego una letra
/\w+ \s+\w/ =~ "Hola  mundo" # => 0

Agrupación: Link to heading

  • Se pueden usar paréntesis para agrupar partes de una expresión regular.

Ejemplo: Link to heading

# busca una fecha con formato dd/mm/yyyy
/\d{2}\/\d{2}\/\d{4}/ =~ "12/03/2024" # => 0

# busca una fecha con formato dd/mm/yyyy, donde dd y mm puede ser de uno o dos digitos
/\d{1,2}\/\d{1,2}\/\d{4}/ =~ "12/03/2024" # => 0

Operadores lógicos: Link to heading

  • Se pueden usar operadores lógicos para combinar diferentes expresiones regulares.

Ejemplo: Link to heading

# Busca una direccion de email que puede ser de Gmail o Hotmail

/(gmail|hotmail)\.com/ =~ "juan@gmail.com" # => 0
/(gmail|hotmail)\.com/ =~ "juan@hotmail.com" # => 0

En resumen, las expresiones regulares son una herramienta poderosa para trabajar con texto en Ruby. Su flexibilidad y expresividad las convierten en una parte fundamental del lenguaje para tareas como la búsqueda y validación de datos, la extracción de información y la transformación de texto.

¡Sigue aprendiendo sobre las expresiones regulares para aprovechar al máximo su potencial en tus programas!

Consejos adicionales: Link to heading

  • Puedes usar la herramienta rubular para probar y depurar tus expresiones regulares.
  • Puedes usar la biblioteca rexml para trabajar con XML.
  • Puedes usar la biblioteca nokogiri para trabajar con HTML.

¡Sigue experimentando con las expresiones regulares para crear programas más robustos y versátiles!

Aquí hay algunos ejemplos adicionales de cómo se pueden usar las expresiones regulares: Link to heading

  • Validar la entrada de un usuario
  • Extraer información de una página web
  • Formatear texto
  • Buscar y reemplazar texto
  • Generar código
  • Traducir idiomas
  • Analizar datos

Las posibilidades son infinitas!

<< Rangos en Ruby Procs y Lambdas en Ruby >>