CommencezCommencez gratuitement

Le point d'interrogation et ses deux sens

L'opérateur OU est utile si vous savez exactement quelles options sont valides et si vous êtes certain qu'une des options est présente. Mais que faire si vous voulez repérer un motif dont une partie est parfois présente et parfois non? C'est là qu'intervient le point d'interrogation ? :

Le ? peut rendre facultatif le groupe ou le caractère qui le précède. Avec lui, une expression régulière concorde même si une partie du motif est absente. Attention toutefois : s'il suit un multiplicateur comme * ou +, le point d'interrogation peut avoir un deuxième effet :

Le ? peut aussi rendre « non gourmand » (lazy) le multiplicateur qui le précède au lieu d'être « gourmand » (greedy). Autrement dit, plutôt que de chercher le nombre maximal de caractères, le ? a le pouvoir de trouver le nombre minimal de correspondances dans le texte.

Cette activité fait partie du cours

Expressions régulières intermédiaires en R

Voir le cours

Instructions de l’exercice

  • Faites concorder à la fois le singulier "Screen" et le pluriel "Screens" en rendant optionnel le dernier "s".
  • Faites concorder une quantité aléatoire de caractères quelconques avant une virgule en utilisant .*.
  • Faites concorder le même motif avec un point d'interrogation ? après l'astérisque — voyez-vous la différence?

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Match both Screen and Screens by making the last "s" optional
str_match(lines, pattern = "Screens___")

# Match a random amount of arbitrary characters, followed by a comma
str_match(lines, pattern = "___,")

# Match the same pattern followed by a comma, but the "lazy" way
str_match(lines, pattern = "___,")
Modifier et exécuter le code