Les expressions regulars (regex) són una eina potent per treballar amb cadenes de text. Permeten buscar, coincidir i manipular patrons de text de manera eficient. En Ruby, les expressions regulars són objectes de la classe Regexp
.
Conceptes Clau
Sintaxi Bàsica
Una expressió regular es defineix entre barres inclinades (/
). Per exemple:
Caràcters Especials
Els caràcters especials tenen significats específics en les expressions regulars:
.
: Coincideix amb qualsevol caràcter excepte una nova línia.*
: Coincideix amb zero o més repeticions del caràcter anterior.+
: Coincideix amb una o més repeticions del caràcter anterior.?
: Coincideix amb zero o una repetició del caràcter anterior.\d
: Coincideix amb qualsevol dígit (equivalent a[0-9]
).\w
: Coincideix amb qualsevol caràcter de paraula (lletres, dígits i guions baixos).\s
: Coincideix amb qualsevol caràcter d'espai en blanc (espai, tabulador, nova línia).^
: Coincideix amb el començament de la cadena.$
: Coincideix amb el final de la cadena.
Grups i Captures
Els parèntesis ()
s'utilitzen per agrupar parts d'una expressió regular i per capturar coincidències:
Classes de Caràcters
Les classes de caràcters permeten definir un conjunt de caràcters que poden coincidir en una posició determinada:
[abc]
: Coincideix amb qualsevol dels caràctersa
,b
oc
.[a-z]
: Coincideix amb qualsevol lletra minúscula.[^abc]
: Coincideix amb qualsevol caràcter exceptea
,b
oc
.
Utilització en Ruby
Creació d'Expressions Regulars
Les expressions regulars es poden crear utilitzant la sintaxi /patró/
o el constructor Regexp.new
:
Mètodes de Coincidència
Ruby proporciona diversos mètodes per treballar amb expressions regulars:
=~
: Retorna la posició de la primera coincidència onil
si no hi ha coincidència.match
: Retorna un objecteMatchData
amb informació sobre la coincidència.scan
: Retorna un array amb totes les coincidències.
Exemple:
cadena = "Hola, món!" # Utilitzant =~ if cadena =~ /món/ puts "Coincidència trobada!" end # Utilitzant match coincidencia = cadena.match(/món/) puts coincidencia[0] if coincidencia # Utilitzant scan coincidencies = cadena.scan(/\w+/) puts coincidencies.inspect
Substitució i Manipulació
Els mètodes sub
i gsub
s'utilitzen per substituir coincidències en una cadena:
sub
: Substitueix la primera coincidència.gsub
: Substitueix totes les coincidències.
Exemple:
cadena = "Hola, món!" # Utilitzant sub nova_cadena = cadena.sub(/món/, "univers") puts nova_cadena # "Hola, univers!" # Utilitzant gsub nova_cadena = cadena.gsub(/\w+/, "paraula") puts nova_cadena # "paraula, paraula!"
Exercicis Pràctics
Exercici 1: Validació d'Adreces de Correu Electrònic
Escriu una expressió regular per validar adreces de correu electrònic.
Solució:
def validar_correu(correu) regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i correu =~ regex ? "Adreça vàlida" : "Adreça no vàlida" end puts validar_correu("[email protected]") # Adreça vàlida puts validar_correu("exemple@domini") # Adreça no vàlida
Exercici 2: Extracció de Números de Telèfon
Escriu una expressió regular per extreure números de telèfon d'un text.
Solució:
def extreure_telefons(text) regex = /\b\d{3}[-.\s]?\d{3}[-.\s]?\d{4}\b/ text.scan(regex) end text = "Contacta'ns al 123-456-7890 o al 987.654.3210." puts extreure_telefons(text).inspect # ["123-456-7890", "987.654.3210"]
Resum
Les expressions regulars són una eina poderosa per treballar amb cadenes de text en Ruby. Hem après la sintaxi bàsica, els caràcters especials, els grups i captures, les classes de caràcters i com utilitzar-les en Ruby per a la coincidència, substitució i manipulació de text. Els exercicis pràctics proporcionats ajuden a consolidar aquests conceptes.
Curs de Programació en Ruby
Mòdul 1: Introducció a Ruby
Mòdul 2: Conceptes Bàsics de Ruby
Mòdul 3: Treballant amb Col·leccions
Mòdul 4: Programació Orientada a Objectes en Ruby
- Classes i Objectes
- Variables i Mètodes d'Instància
- Variables i Mètodes de Classe
- Herència
- Mòduls i Mixins
Mòdul 5: Conceptes Avançats de Ruby
- Blocs, Procs i Lambdas
- Metaprogramació
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Expressions Regulars
Mòdul 6: Introducció a Ruby on Rails
- Què és Ruby on Rails?
- Configuració de l'Entorn Rails
- Creació d'una Aplicació Simple en Rails
- Arquitectura MVC
- Rutes
Mòdul 7: Proves en Ruby
- Introducció a les Proves
- Proves Unitàries amb Minitest
- Desenvolupament Basat en Comportament amb RSpec
- Mocking i Stubbing
Mòdul 8: Millors Pràctiques en Ruby
- Estil de Codi i Convencions
- Refactorització
- Optimització del Rendiment
- Millors Pràctiques de Seguretat