Expresiones regulares básicas en Ruby con gsub

Las expresiones regulares (abreviadas a expresiones regulares) se utilizan para operar en patrones encontrados en cadenas. Pueden encontrar, reemplazar o eliminar ciertas partes de las cuerdas, dependiendo de lo que les digas que hagan. En Ruby, siempre están contenidos dentro de dos barras oblicuas.

Por ejemplo, usando el .método gsub para cadenas:

sentence = "This is a sample sentence."
sentence.gsub(/a/, "") #returns "This is smple sentence."

El .el método gsub es encontrar todas las a en la cadena y eliminarlas, porque la segunda mitad del argumento está vacía. Si tuviéramos que añadir algo entre las comillas:

sentence.gsub(/This/, "*") #returns "* is a sample sentence."

Luego encuentra y reemplaza todas las instancias de «This» con un asterisco (*). También hay una forma de revertir esta funcionalidad, agregando un signo de mayúsculas ( ^ ) en la parte delantera de la expresión regular hará lo contrario:

sentence.gsub(//, "*") #returns "********a**a**************"

Todo (¡incluidos los espacios!) en la cadena que NO es una a se reemplaza con asteriscos. Observe que para aplicar esta funcionalidad son necesarios los corchetes (), sin ellos el gsub no hará nada.

Es posible pasar rangos de números o letras a la expresión regular para evitar tener que escribir todas las letras del alfabeto o todos los números del 0 al 9.

sentence = "Th1s 1s a sampl3 s3nt3nc3."
sentence.gsub(//, "!") #these return the same thing
sentence.gsub(//, "!") # "Th!s !s a sampl! s!nt!nc!."

Y para rangos de letras:

sentence.gsub(//, "🔥") 
#returns "🔥🔥1🔥 1🔥 🔥 🔥🔥🔥🔥🔥3 🔥3🔥🔥3🔥🔥3."

A-Z incluye todas las letras mayúsculas y a-z incluye todas las letras minúsculas. Así que este gsub está eliminando todas las letras y reemplazándolas con el emoji de fuego.

Atajos

Hay muchos atajos útiles disponibles para simplificar lo que se pasa a la expresión regular. Estos son algunos de los más útiles que he encontrado hasta ahora:

  • \w para apuntar a todas las letras y números:
lorem = "Lorem ipsum."
lorem.gsub(//, "wow") #returns "wowwowwowwowwow wowwowwowwowwow."

• \W para hacer lo contrario (en el siguiente ejemplo, está reemplazando los espacios y el punto al final con «wow»):

lorem.gsub(//, "wow") #returns "Loremwowipsumwow"
  • \d para apuntar a todos los enteros:
lorem = "L0r3m 1psum"
lorem.gsub(//, "-") #returns "L-r-m -psum."
  • \D hacer lo contrario
lorem.gsub(//, "-") #returns "-0-3--1-----"

Hay muchos más accesos directos y un gran recurso para esto que encontré es Rubular, tiene una lista de ellos y te permite probarlos en el navegador.

Bloques

Los bloques se pueden usar para cambiar el modo .gsub se comporta. Este es un ejemplo para poner en mayúscula cada palabra de una cadena:

cool_phrase = "slow lorises are cool"
cool_phrase.gsub(/\w+/) {|word| word.capitalize}
#returns "Slow Lorises Are Cool"

Nota: el símbolo » + » después de \w está seleccionando cada palabra que tenga 1 o más caracteres. Sin el»+», toda la cadena estaría en mayúsculas.

Aquí hay otro ejemplo donde el número en una cadena se incrementa:

year = "The year is 3100"
year.gsub(/\d+/) {|num| num.to_i + 1} #returns "The year is 3101"

Nota: de nuevo, el símbolo «+» está seleccionando cada número que tenga 1 o más números como un todo. Sin él, el retorno sería «El año es 4211» porque estaría incrementando cada número individualmente.

Casos de uso

Las expresiones regulares se utilizan a menudo para validar o filtrar la entrada del usuario. Imagine que su sitio web tiene un formulario que incluye el número de teléfono de un usuario. Este es un ejemplo de cómo eliminar los símbolos para obtener solo el número como un entero:

phone_number = "(123)456-7890"
phone_number.gsub(/, ""/) #returns "1234567890"

Al obtener el nombre del usuario, es útil obtener solo una cadena de letras y eliminar cualquier cosa que ingrese que sea un número o un símbolo.

steve = "St97eve Brul()*)e "
steve.gsub(//, "").split(/(?=)/).join(" ")
#returns "Steve Brule"

El ejemplo anterior parece un poco complejo, sin embargo, todo lo que está haciendo es eliminar todos los símbolos y números, dividir el resultado en una matriz basada en dónde están las letras mayúsculas y unirlas en una cadena.

Conclusión y Recursos

expresiones Regulares y .los gsub son herramientas poderosas que pueden mejorar su programa, pero leer e intentar descifrarlos a veces puede parecer que está leyendo jeroglíficos (vea la imagen de abajo). Recomiendo tomarse su tiempo para aprenderlos y tratar de averiguarlos uno a la vez. ¡Haz esto y pronto serás un maestro de expresiones regulares!

Qué!?

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Previous post Cómo Cosechar y Usar Escaramujos
Next post Las Propiedades físicas del Titanio