Expressões Regulares básicas em Ruby com gsub

Expressões Regulares (abreviadas para regex) são usadas para operar em padrões encontrados em strings. Eles podem encontrar, substituir ou remover certas partes de cadeias de caracteres, dependendo do que você lhes diz para fazer. Em Ruby, eles são sempre contidos dentro de duas barras dianteiras.

por exemplo, usando o .método gsub para cadeias de caracteres:

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

o .o método gsub é encontrar todos os a’s na cadeia e removê-los, porque a segunda metade do argumento está vazia. Se acrescentássemos algo entre as aspas:

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

ele então encontra e substitui todas as instâncias de “This” por um asterisco (*). Há uma maneira de reverter esta funcionalidade também, adicionando um caret ( ^ ) na frente da expressão regular fará o oposto:

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

tudo (incluindo os espaços!) na cadeia que não é um a está sendo substituída por asterisks. Note que para aplicar esta funcionalidade os parêntesis rectos () são necessários, sem eles o gsub não fará nada.

é possível passar números ou intervalos de letras para o regex para se salvar de ter que digitar cada letra no alfabeto ou todos os números 0 a 9.

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

e para os intervalos de letras:

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

A-Z inclui todas as letras maiúsculas e a-z inclui todas as letras minúsculas. Então este gsub está a remover todas as letras e a substituí-las pelo emoji de fogo.

Atalhos

Existem muitos atalhos úteis disponíveis para simplificar o que é passado para o regex. Aqui estão alguns dos mais úteis que encontrei até agora.:

  • \w para o direcionamento de todas as letras e números:
lorem = "Lorem ipsum."
lorem.gsub(//, "wow") #returns "wowwowwowwowwow wowwowwowwowwow."

• \W para fazer o oposto (no exemplo abaixo, é a substituição dos espaços e o período no final com a “uau”):

lorem.gsub(//, "wow") #returns "Loremwowipsumwow"
  • \d para o direcionamento de todos os números inteiros:
lorem = "L0r3m 1psum"
lorem.gsub(//, "-") #returns "L-r-m -psum."
  • \D para fazer o oposto
lorem.gsub(//, "-") #returns "-0-3--1-----"

Existem muitos atalhos mais e um grande recurso para este eu encontrei é Rubular, ele tem uma lista deles e permite que você testá-los no navegador.

blocos

blocos podem ser utilizados para alterar o modo de funcionamento .o gsub comporta-se. Aqui está um exemplo para capitalizar cada palavra em uma string:

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

Nota: O símbolo ” + ” após o \w está selecionando cada palavra que tem 1 ou mais caracteres. Sem o ” + ” a cadeia inteira seria em maiúsculas.

aqui está outro exemplo onde o número de uma cadeia é aumentado:

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

nota: novamente, o símbolo ” + ” está selecionando cada número que tem 1 ou mais número como um todo. Sem ele, o retorno seria “o ano é 4211” porque estaria aumentando cada número individualmente.

casos de Utilização

expressões regulares são frequentemente utilizadas para validar ou filtrar a entrada do utilizador. Imagine que seu site tem um formulário que toma o número de telefone de um usuário. Aqui está um exemplo de retirar os símbolos de obter apenas o número como um número inteiro:

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

Ao obter o nome do usuário, é útil apenas para obter uma seqüência de letras e remover qualquer coisa que a entrada é um número ou um símbolo.

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

o exemplo acima parece um pouco complexo, no entanto tudo o que está fazendo é remover todos os símbolos e números, dividindo o resultado em uma matriz baseada em onde as letras maiúsculas estão, e juntando-os em uma cadeia.

conclusão e recursos

Expressões Regulares e .gsub são ferramentas poderosas que podem melhorar o seu programa, mas ler e tentar descobri-las às vezes pode parecer que você está lendo hieróglifos (ver imagem abaixo). Eu recomendo levar o seu tempo a aprendê-los e tentar entendê-los um de cada vez. Faz isto e em breve serás um mestre da regex!

o Que!?

Deixe uma resposta

O seu endereço de email não será publicado.

Previous post como Colher e usar Ancas de rosa
Next post as propriedades físicas do titânio