Passer au contenu principal
eLearner.app
Module 4 · Leçon 2 sur 414/32 dans le cours~10 min
Leçons du module (2/4)

Alternatives : `|`

Le tube (pipe) | est le OU des regex : le motif correspond si l'une des alternatives correspond. Sa précédence est très basse : | sépare tout ce qui se trouve à sa gauche et à sa droite jusqu'au groupe qui l'entoure ou au début du motif.

Code
Pattern: cane|gatto|criceto
Sample:  Ho un cane, un gatto e un criceto.
               ^^^^     ^^^^^         ^^^^^^^

Les parenthèses dictent la précédence

Sans parenthèses, les alternatives s'étendent du début à la fin du motif. Presque toujours, vous voulez limiter le OU à une portion du motif : enveloppez-le dans un groupe.

Code
Pattern   Significato (errato vs corretto)
^a|b$     "inizio + a" oppure "b + fine"           (probablement faux)
^(a|b)$   "inizio + (a ou b) + fine"               (probablement correct)

À propos de l'ordre typique des alternatives : placez les plus spécifiques/longues en premier. Le moteur essaie de gauche à droite et s'arrête à la première qui correspond : gat|gatto ne correspondrait toujours qu'à gat.

Précédence et isolation des alternatives

L'opérateur | a une précédence très basse. Si vous écrivez ^abc|def$, vous recherchez "une chaîne commençant par abc OU une chaîne se terminant par def". Pour rechercher "le début de la chaîne suivi de abc ou def, suivi de la fin de la chaîne", vous devez écrire ^(abc|def)$.

À vous de jouer

Exercice#regex.m4.l2.e1
Tentatives : 0Chargement…

Trouvez chaque occurrence des trois animaux `cane`, `gattomulti_replace_file_content`, `criceto` dans le texte (dans n'importe quel ordre).

Chargement de l'éditeur…
Afficher l'indice

Le tube sépare les alternatives. Utilisez le drapeau g pour toutes les capturer.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#regex.m4.l2.e2
Tentatives : 0Chargement…

Trouvez les mots `gennaio` ou `febbraio` UNIQUEMENT en tant que mots entiers (utilisez `` pour éviter les correspondances dans des mots plus longs). Utilisez des parenthèses pour limiter l'alternance.

Chargement de l'éditeur…
Afficher l'indice

\b(gennaio|febbraio)\b ancre le choix à des mots entiers.

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#regex.m4.l2.e3
Tentatives : 0Chargement…

Trouvez les noms de fichiers se terminant par les extensions `.jpg`, `.png` ou `.gif`.

Chargement de l'éditeur…
Afficher l'indice

Utilisez le tube à l'intérieur d'un groupe pour alterner entre les extensions.

Solution disponible après 3 tentatives