CommencerCommencer gratuitement

Le point d’interrogation et ses deux significations

L’opérateur « ou » est utile si vous savez exactement quelles options sont valides, et si vous êtes certain qu’au moins l’une d’elles est présente. Mais que faire si vous voulez faire correspondre 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 rationnelle peut correspondre même si une partie du motif manque. Attention toutefois : s’il suit un multiplicateur comme * ou +, le point d’interrogation peut avoir un second effet.

Le ? peut aussi rendre « paresseux » (lazy) le multiplicateur qui le précède, au lieu d’être « gourmand » (greedy). Autrement dit, au lieu que l’expression rationnelle cherche le nombre maximal de caractères, le ? lui permet de trouver le nombre minimal d’occurrences dans le texte.

Cet exercice fait partie du cours

Expressions régulières intermédiaires en R

Afficher le cours

Instructions

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

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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