Expressions régulières de base dans Ruby avec gsub

Les expressions régulières (raccourcies en regex) sont utilisées pour opérer sur des motifs trouvés dans des chaînes. Ils peuvent trouver, remplacer ou supprimer certaines parties des chaînes en fonction de ce que vous leur dites de faire. En Ruby, ils sont toujours contenus dans deux barres obliques avant.

Par exemple, en utilisant le .méthode gsub pour les chaînes:

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

Le.la méthode gsub trouve tous les a de la chaîne et les supprime, car la seconde moitié de l’argument est vide. Si nous devions ajouter quelque chose entre les guillemets:

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

Il trouve et remplace toutes les instances de « This » par un astérisque (*). Il existe également un moyen d’inverser cette fonctionnalité, l’ajout d’un caret (^) à l’avant de l’expression régulière fera le contraire:

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

Tout (y compris les espaces!) dans la chaîne qui n’est PAS un a est remplacé par des astérisques. Notez que pour appliquer cette fonctionnalité, les crochets () sont nécessaires, sans eux, le gsub ne fera rien.

Il est possible de passer des plages de nombres ou de lettres dans l’expression régulière pour vous éviter d’avoir à taper chaque lettre de l’alphabet ou tous les nombres de 0 à 9.

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

Et pour les plages de lettres:

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

A-Z comprend toutes les lettres majuscules et a-z toutes les lettres minuscules. Donc, ce gsub supprime toutes les lettres et les remplace par l’emoji de feu.

Raccourcis

De nombreux raccourcis utiles sont disponibles pour simplifier ce qui est transmis dans l’expression régulière. Voici quelques-uns des plus utiles que j’ai trouvés jusqu’à présent:

  • \ w pour cibler toutes les lettres et tous les chiffres:
lorem = "Lorem ipsum."
lorem.gsub(//, "wow") #returns "wowwowwowwowwow wowwowwowwowwow."

• \ W pour faire le contraire (dans l’exemple ci-dessous, il remplace les espaces et le point à la fin par « wow »):

lorem.gsub(//, "wow") #returns "Loremwowipsumwow"
  • \ d pour cibler tous les entiers:
lorem = "L0r3m 1psum"
lorem.gsub(//, "-") #returns "L-r-m -psum."
  • \ D pour faire le contraire
lorem.gsub(//, "-") #returns "-0-3--1-----"

Il y a beaucoup plus de raccourcis et une excellente ressource pour cela que j’ai trouvée est Rubular, il en a une liste et vous permet de les tester dans le navigateur.

Blocs

Les blocs peuvent être utilisés pour modifier la façon de procéder.gsub se comporte. Voici un exemple de mise en majuscule de chaque mot d’une chaîne:

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

Remarque: le symbole « + » après le \w sélectionne chaque mot qui a 1 caractère ou plus. Sans le « + », toute la chaîne serait en majuscules.

Voici un autre exemple où le nombre d’une chaîne est incrémenté:

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

Remarque: encore une fois, le symbole « + » sélectionne chaque nombre qui a 1 nombre ou plus dans son ensemble. Sans cela, le retour serait « L’année est 4211 » car il incrémenterait chaque nombre individuellement.

Cas d’utilisation

Les expressions régulières sont souvent utilisées pour valider ou filtrer les entrées utilisateur. Imaginez que votre site Web a un formulaire qui prend le numéro de téléphone d’un utilisateur. Voici un exemple de suppression des symboles pour obtenir uniquement le nombre sous forme d’entier:

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

Lors de l’obtention du nom de l’utilisateur, il est utile de n’obtenir qu’une chaîne de lettres et de supprimer tout ce qu’ils ont entré qui est un nombre ou un symbole.

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

L’exemple ci-dessus semble un peu complexe, mais tout ce qu’il fait est de supprimer tous les symboles et chiffres, de diviser le résultat en un tableau en fonction de l’emplacement des lettres majuscules et de les joindre en une chaîne.

Conclusion et ressources

Expressions régulières et.les gsub sont des outils puissants qui peuvent améliorer votre programme, mais lire et essayer de les comprendre peut parfois donner l’impression de lire des hiéroglyphes (voir l’image ci-dessous). Je recommande de prendre votre temps pour les apprendre et d’essayer de les comprendre un à la fois. Faites cela et bientôt vous serez un maître regex!

Quoi !?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Previous post Comment récolter et utiliser les Cynorrhodons
Next post Les propriétés physiques du titane