Scheda di revisione: Maîtrise des classes et propriétés en regex

📋 Plan du Cours

  1. Caractères littéraux
  2. Classes prédéfinies
  3. Classes de mots
  4. Classes d'espaces
  5. Construction de classes
  6. Quantificateurs
  7. Alternatives et groupes
  8. Ancres et limites
  9. Groupes capturants et nommés
  10. Assertions lookaround
  11. Propriétés Unicode

📖 1. Caractères littéraux

🔑 Notions clés & Définitions

  • Caractère littéral : Un symbole ou une lettre dans une expression régulière qui correspond exactement à ce caractère dans le texte. Exemple : /a/ correspond à la lettre "a".

  • Caractère spécial : Un symbole ayant une signification particulière en regex (ex : ., *, +, ?, \d, \w). Pour le faire correspondre littéralement, il doit être échappé avec un antislash \.

  • Échappement (\) : Technique pour indiquer que le caractère suivant doit être interprété comme un caractère littéral, même s'il est normalement spécial. Exemple : /\./ pour faire correspondre un point littéral.

  • Classe de caractères [ ] : Définissent un ensemble de caractères possibles. Exemple : [abc] correspond à "a", "b" ou "c". Les intervalles [a-z] ou [0-9] permettent de représenter une plage de caractères.

  • Caractère d’échappement dans une classe [ ] : Certains caractères spéciaux comme -, ^, ] doivent être échappés ou placés à des positions spécifiques pour être interprétés littéralement.

  • Quantificateurs { } : Indiquent le nombre de répétitions d’un caractère ou groupe. Exemple : \d{3} pour exactement 3 chiffres.

📝 Points essentiels

  • Les caractères littéraux sont la base des expressions régulières : ils permettent de rechercher une correspondance exacte avec un caractère précis dans le texte.

  • Les caractères spéciaux doivent être échappés (\) pour être traités comme des caractères normaux, sinon ils ont une fonction particulière (ex : . pour n’importe quel caractère).

  • La syntaxe [ ] permet de créer des classes de caractères pour définir des ensembles précis ou des plages, facilitant la recherche de plusieurs caractères.

  • Les intervalles [a-z] ou [0-9] sont inclusifs, c’est-à-dire qu’ils incluent les deux bornes.

  • La combinaison de classes et de quantificateurs permet de définir des motifs complexes et précis.

  • La méthode test() permet de vérifier si une expression régulière correspond à une chaîne donnée.

💡 À retenir

Les caractères littéraux et leur échappement sont fondamentaux pour construire des expressions régulières précises. La maîtrise des classes de caractères [ ], des intervalles [a-z], et des quantificateurs { } permet de créer des motifs puissants pour la recherche et la validation de textes.

📖 2. Classes prédéfinies

🔑 Notions clés & Définitions

  • Caractères littéraux : caractères simples dans une expression régulière, correspondant exactement à eux-mêmes, ex : /abc/ correspond à la chaîne "abc".

  • Classes prédéfinies : raccourcis pour représenter des ensembles de caractères courants :

    • \d : chiffre (0-9)
    • \D : tout caractère sauf un chiffre
    • \w : caractère de mot (lettres, chiffres, underscore)
    • \W : tout caractère non de mot
    • \s : espace blanc (espace, tabulation, saut de ligne)
    • \S : tout caractère non espace blanc
  • Caractère point (.) : correspond à tout caractère sauf saut de ligne (\n), sauf si le marqueur s est activé pour inclure les sauts de ligne.

  • Échappement (\) : permet d'utiliser des caractères spéciaux comme caractères littéraux, par exemple \. pour un point.

  • Classes personnalisées ([ ]) : délimitent un ensemble de caractères à faire correspondre, par exemple [a-z0-9]. L'inverse est [ ^ ] pour exclure certains caractères.

📝 Points essentiels

  • \d et \D sont très utilisés pour valider ou rechercher des chiffres ou leur absence.
  • \w inclut lettres, chiffres et underscore, mais pas les caractères accentués ou spéciaux non anglais.
  • \W est l'inverse de \w, utile pour exclure les caractères de mot.
  • \s couvre tous les espaces blancs, y compris tabulations et sauts de ligne, tandis que \S couvre tous les autres caractères.
  • Le point (.) doit être échappé (\.) pour rechercher un point littéral.
  • Les classes personnalisées [ ] permettent de définir précisément quels caractères faire correspondre ou exclure.

💡 À retenir

Les classes prédéfinies simplifient la création d'expressions régulières en regroupant des ensembles de caractères courants, mais leur comportement peut varier selon le contexte (ex : \w ne couvre pas tous les caractères accentués). Il est essentiel de connaître leur signification pour construire des regex efficaces et précis.

📖 3. Classes de mots

🔑 Notions clés & Définitions

  • Caractères littéraux : Caractères simples qui correspondent exactement à eux-mêmes dans une expression régulière, comme 'a', 'b', ou '1'.

  • Classes prédéfinies :

    • \d : correspond à tout chiffre de 0 à 9.
    • \D : correspond à tout caractère qui n'est pas un chiffre.
    • \w : correspond à tout caractère alphanumérique (lettres, chiffres, underscore).
    • \W : correspond à tout caractère non alphanumérique.
    • \s : correspond à tout espace blanc (espace, tabulation, saut de ligne).
    • \S : correspond à tout caractère non espace blanc.
  • Crochets [ ] : Définissent une classe de caractères spécifiques. Par exemple, [a1;] correspond à un seul caractère parmi 'a', '1' ou ';'.

    • [^ ] : classe négative, correspond à tout caractère sauf ceux listés.
    • [a-z] : intervalle de caractères, ici toutes les lettres minuscules.
  • Quantificateurs :

    • {n} : exactement n répétitions.
    • {n,m} : entre n et m répétitions.
    • + : une ou plusieurs répétitions.
    • * : zéro ou plusieurs répétitions.
    • ? : zéro ou une répétition, rend un caractère ou groupe optionnel.
  • Alternatives | : OU logique entre plusieurs options, par exemple (a|b|c).

  • Ancres :

    • ^ : début de ligne ou de texte.
    • $ : fin de ligne ou de texte.
    • \b : limite de mot (début ou fin d’un mot).
  • Groupes () : Capturent une partie de l’expression pour la réutiliser ou extraire.

    • Groupes nommés (?<nom>) : permettent d’accéder directement à la partie capturée via un nom.
  • Lookaround :

    • (?=...) : positive assertion, vérifie la présence d’une expression après.
    • (?!...) : negative assertion, vérifie l’absence d’une expression après.
    • (?<=...) : assertion positive avant.
    • (?<!...) : assertion négative avant.
  • Marqueurs :

    • g : recherche globale.
    • i : insensible à la casse.
    • m : mode multilignes.
    • u : mode Unicode.
    • s : dotAll, le . inclut les sauts de ligne.
    • y : recherche à partir de la position lastIndex.

📝 Points essentiels

  • Les caractères spéciaux doivent être échappés avec \ pour représenter leur caractère littéral (ex : \. pour un point).
  • Les classes de caractères permettent de définir rapidement des ensembles de caractères à faire correspondre.
  • Les quantificateurs permettent de préciser le nombre de répétitions souhaitées.
  • Les groupes capturent des sous-parties pour extraire ou réutiliser dans la substitution.
  • Les assertions de lookaround permettent de vérifier la présence ou l’absence d’un motif avant ou après une position donnée, sans l’inclure dans la correspondance.
  • Les ancres ^ et $ permettent de cibler le début ou la fin d’un texte ou d’une ligne.
  • Les marqueurs modifient le comportement de la recherche (ex : insensibilité à la casse, recherche globale).

💡 À retenir

Les classes de caractères et les quantificateurs offrent une flexibilité extrême pour définir précisément des motifs dans une expression régulière, rendant leur maîtrise essentielle pour analyser, valider ou transformer du texte efficacement.

📖 4. Classes d'espaces

🔑 Notions clés & Définitions

  • Caractères littéraux : Caractères simples qui correspondent exactement à eux-mêmes dans une expression régulière. Exemple : /abc/ correspond à la chaîne "abc".

  • Classes prédéfinies :

    • \d : Correspond à n'importe quel chiffre entre 0 et 9.
    • \D : Correspond à tout caractère qui n'est pas un chiffre.
    • \w : Correspond à tout caractère alphanumérique (lettres, chiffres, underscore).
    • \W : Correspond à tout caractère non alphanumérique.
    • \s : Correspond à tout espace blanc (espace, tabulation, saut de ligne).
    • \S : Correspond à tout caractère non espace blanc.
  • Caractère point (.) : Correspond à tout caractère sauf les sauts de ligne. Pour faire correspondre un point littéral, il faut l’échapper (\.).

  • Construction de classes ([ ]) : Permet de définir un ensemble précis de caractères. Exemple : [a-z] pour toutes les lettres minuscules.

  • Inversion de classes ([^ ]) : Correspond à tous les caractères sauf ceux spécifiés. Exemple : [^a-z].

  • Intervalles ([ - ]) : Permettent de faire correspondre tous les caractères entre deux limites. Exemple : [0-9] ou [A-Z].

  • Quantificateurs :

    • {n} : Exactement n répétitions.
    • {n,} : Au moins n répétitions.
    • {n,m} : Entre n et m répétitions.
    • + : 1 ou plus répétitions.
    • * : 0 ou plus répétitions.
    • ? : 0 ou 1 répétition (optionnel).
  • Alternatives (|) : OU logique pour faire correspondre plusieurs options. Exemple : a|b correspond à "a" ou "b".

  • Ancres :

    • ^ : Début de la ligne ou du texte.
    • $ : Fin de la ligne ou du texte.
    • \b : Limite de mot (début ou fin d’un mot).
  • Groupes :

    • Capturant : ( ) pour extraire une partie du texte.
    • Non capturant : (?: ) pour grouper sans capturer.
    • Groupes nommés : (?<nom> ) pour accéder par nom.
  • Lookaround :

    • Positive ((?= )) : Vérifie la présence d’une expression après.
    • Negative ((?! )) : Vérifie l’absence d’une expression après.
    • Positive lookbehind ((?<= )) : Vérifie la présence d’une expression avant.
    • Negative lookbehind ((?<! )) : Vérifie l’absence d’une expression avant.
  • Marqueurs :

    • g : Recherche globale.
    • i : Insensible à la casse.
    • m : Multiligne.
    • u : Active l’Unicode.
    • s : DotAll, . inclut les sauts de ligne.
    • y : Recherche à la position lastIndex.

📝 Points essentiels

  • Les classes prédéfinies (\d, \w, \s) facilitent la création d’expressions pour des caractères spécifiques.
  • La construction de classes [ ] permet de définir précisément quels caractères doivent correspondre, avec possibilité d’inversion [^ ].
  • Les quantificateurs { }, +, *, ? contrôlent la répétition des caractères ou groupes.
  • Les alternatives | permettent de tester plusieurs options dans une même expression.
  • Les ancres ^ et $ fixent le début et la fin du texte ou d’une ligne en mode multiligne.
  • Les groupes ( ) permettent d’extraire des sous-chaînes ou de structurer l’expression.
  • Les assertions de lookaround (?=, ?!, ?<=, ?<!) permettent de vérifier la présence ou l’absence d’un motif avant ou après une position donnée.
  • Les marqueurs modifient le comportement de la recherche (global, insensible, multiligne, Unicode, etc.).

💡 À retenir

Les classes d'espaces et caractères prédéfinis en expression régulière offrent une syntaxe puissante et concise pour définir précisément des motifs de recherche, tout en permettant une grande flexibilité grâce aux quantificateurs, groupes, et assertions.

📖 5. Construction de classes

🔑 Notions clés & Définitions

  • Caractères littéraux : caractères simples qui correspondent exactement à eux-mêmes dans une expression régulière. Exemple : /abc/ correspond à la chaîne "abc".

  • Classes prédéfinies :

    • \d : correspond à n'importe quel chiffre entre 0 et 9.
    • \D : correspond à tout caractère qui n'est pas un chiffre.
    • \w : correspond à tout caractère alphanumérique (lettres, chiffres, underscore).
    • \W : correspond à tout caractère non alphanumérique.
    • \s : correspond à tout espace (espace, tabulation, saut de ligne).
    • \S : correspond à tout caractère non espace.
  • Construction de classes avec [ ] : permet de définir un ensemble précis de caractères. Exemple : [a1;] correspond à un seul caractère parmi a, 1 ou ;.

  • Inversion avec [^ ] : correspond à tout caractère sauf ceux spécifiés. Exemple : [^a1;].

  • Intervalles [ - ] : permettent de faire correspondre une gamme de caractères. Exemple : [c-g] correspond à c, d, e, f, g.

  • Raccourcis dans les classes :

    • [0-9] équivaut à \d.
    • [a-zA-Z0-9_] équivaut à \w.
    • [^\d] équivaut à \D.

📝 Points essentiels

  • Les classes prédéfinies simplifient la création d'expressions régulières pour des caractères courants.
  • La syntaxe [ ] permet de définir des ensembles spécifiques ou des plages de caractères.
  • L'utilisation de ^ à l'intérieur d'une classe [ ^ ] inverse la sélection, excluant certains caractères.
  • Les intervalles [a-z] ou [0-9] sont inclusifs, couvrant tous les caractères entre les limites.
  • Les raccourcis \d, \w, \s sont équivalents à des classes précises, mais leur utilisation dans des classes est souvent plus concise.

💡 À retenir

Les classes de caractères permettent de construire rapidement des motifs précis en regroupant ou excluant des caractères, avec une syntaxe simple et efficace pour couvrir une large gamme de cas en expression régulière.

📖 6. Quantificateurs

🔑 Notions clés & Définitions

  • Quantificateur : Symbole ou syntaxe indiquant le nombre de répétitions d’un caractère ou d’un groupe dans une expression régulière.
  • {n} : Quantificateur d’une répétition exacte, correspondant à exactement n occurrences.
  • {min, max} : Quantificateur de répétitions entre min et max inclus.
  • + : Raccourci pour {1,} ; une ou plusieurs répétitions (au moins une).
  • * : Raccourci pour {0,} ; zéro ou plusieurs répétitions (optionnel).
  • ? : Raccourci pour {0,1} ; zéro ou une occurrence, rendant un élément optionnel.
  • Alternatives (|) : OU logique permettant de choisir entre plusieurs options dans une expression.
  • Gourmand (greedy) : Comportement par défaut où le quantificateur tente d’appliquer la plus grande correspondance possible.
  • Paresseux (lazy) : Quantificateurs suivis de ? pour correspondre au minimum de caractères.
  • Ancres (^, $) : Marquent respectivement le début et la fin d’une ligne ou d’un texte.
  • \b : Limite de mot, indiquant le début ou la fin d’un mot.
  • Groupes () : Permettent de capturer des sous-parties d’une correspondance pour les réutiliser ou les manipuler.
  • Groupes non capturants (?:) : Délimitent une alternative ou un groupe sans le capturer.
  • Lookaround (?=, ?<=, ?!, ?<! ) : Vérifient la présence ou l’absence d’un motif avant ou après une position donnée, sans inclure ce motif dans la correspondance.

📝 Points essentiels

  • Les quantificateurs permettent de définir précisément ou de manière flexible le nombre de répétitions d’un motif dans une regex.
  • Utiliser {n} pour une répétition exacte, {min, max} pour une plage.
  • Les raccourcis +, *, ? simplifient l’écriture des quantificateurs.
  • La différence entre quantificateurs gourmands et paresseux influence la longueur de la correspondance.
  • Les groupes ( ) sont essentiels pour extraire ou manipuler des parties spécifiques d’une correspondance.
  • Les ancres ^ et $ permettent de cibler le début ou la fin d’un texte ou d’une ligne, surtout avec le mode multiligne (m).
  • Les assertions lookahead et lookbehind offrent des possibilités avancées pour vérifier la présence ou l’absence d’un motif dans un contexte précis, sans l’inclure dans la correspondance.

💡 À retenir

Les quantificateurs en regex offrent une grande flexibilité pour définir la répétition de motifs, et leur maîtrise permet d’écrire des expressions précises, efficaces et adaptées à des besoins complexes de validation ou d’extraction.

📖 7. Alternatives et groupes

🔑 Notions clés & Définitions

  • Caractères littéraux : caractères simples qui correspondent exactement à eux-mêmes dans une expression régulière. Exemple : /abc/ correspond à la chaîne "abc".

  • Classes prédéfinies :

    • \d : correspond à n'importe quel chiffre (0-9).
    • \D : correspond à tout caractère qui n'est pas un chiffre.
    • \w : correspond à tout caractère alphanumérique (lettres, chiffres, underscore).
    • \W : correspond à tout caractère non alphanumérique.
    • \s : correspond à tout espace blanc (espace, tabulation, saut de ligne).
    • \S : correspond à tout caractère non espace blanc.
  • Classes personnalisées [ ] :

    • [a-z] : correspond à une lettre minuscule.
    • [^a-z] : correspond à tout caractère sauf une lettre minuscule.
    • [0-9] : correspond à un chiffre.
    • [a-zA-Z0-9_] : équivalent à \w.
  • Quantificateurs :

    • {n} : exactement n répétitions.
    • {n,} : n ou plus répétitions.
    • {n,m} : entre n et m répétitions.
    • + : une ou plusieurs répétitions ({1,}).
    • * : zéro ou plusieurs ({0,}).
    • ? : zéro ou une répétition, ou caractère optionnel.
  • Alternatives | :

    • Permet de choisir entre plusieurs options : (option1|option2).
  • Groupes :

    • () : groupe capturant, pour extraire ou manipuler une partie du texte.
    • (?: ) : groupe non capturant, pour grouper sans capturer.
  • Ancres :

    • ^ : début de ligne ou de texte.
    • $ : fin de ligne ou de texte.
    • \b : limite de mot (début ou fin d’un mot).
  • Lookaround :

    • (?=...) : positive lookahead, vérifie une condition suivante sans la consommer.
    • (?!...) : negative lookahead, vérifie l'absence d'une condition suivante.
    • (?<=...) : positive lookbehind, vérifie une condition précédente.
    • (?<!...) : negative lookbehind, vérifie l'absence d'une condition précédente.

📝 Points essentiels

  • Les caractères spéciaux doivent être échappés avec \ pour correspondre littéralement (ex : \. pour un point).
  • Les classes de caractères permettent de définir rapidement des groupes de caractères.
  • Les quantificateurs permettent de préciser la répétition d’un motif.
  • Les groupes capturants facilitent l’extraction de sous-parties du texte.
  • Les alternatives | permettent de choisir entre plusieurs motifs.
  • Les ancres ^ et $ délimitent le début et la fin d’un texte ou d’une ligne.
  • Les assertions de lookaround permettent de vérifier la présence ou l’absence d’un motif avant ou après une position donnée, sans inclure ce motif dans la correspondance.

💡 À retenir

Les groupes, alternatives, quantificateurs et assertions offrent une puissance exceptionnelle pour construire des expressions régulières précises et efficaces, permettant de manipuler et valider des textes complexes avec une seule ligne de code.

📖 8. Ancres et limites

🔑 Notions clés & Définitions

  • Caractères littéraux : caractères simples qui correspondent exactement à eux-mêmes dans une expression régulière. Exemple : /abc/ correspond à la chaîne "abc".

  • Classes prédéfinies :

    • \d : correspond à n'importe quel chiffre (0-9).
    • \D : correspond à tout caractère qui n'est pas un chiffre.
    • \w : correspond à tout caractère alphanumérique (lettres, chiffres, underscore).
    • \W : correspond à tout caractère non alphanumérique.
    • \s : correspond à tout espace (espace, tabulation, saut de ligne).
    • \S : correspond à tout caractère non espace.
  • Classes personnalisées : délimitées par [ ], permettent de définir un ensemble précis de caractères. Exemple : [a-z] pour toutes les lettres minuscules.

  • Quantificateurs :

    • {n} : exactement n répétitions.
    • {n,} : au moins n répétitions.
    • {n,m} : entre n et m répétitions.
    • + : une ou plusieurs répétitions.
    • * : zéro ou plusieurs répétitions.
    • ? : zéro ou une répétition (optionnel).
  • Alternatives : | permet de choisir entre plusieurs options. Exemple : /a|b/ correspond à "a" ou "b".

  • Ancres :

    • ^ : début de ligne ou début de texte.
    • $ : fin de ligne ou fin de texte.
    • \b : limite de mot (début ou fin d’un mot).
  • Groupes :

    • ( ) : capturent pour extraire des parties du texte.
    • (?: ) : groupes non capturants, pour grouper sans capturer.
  • Lookaround :

    • (?= ) : positive assertion (regarde en avant).
    • (?! ) : negative assertion (regarde en avant, négatif).
    • (?<= ) : positive assertion en arrière.
    • (?<! ) : negative assertion en arrière.
  • Marqueurs :

    • g : recherche globale.
    • i : insensible à la casse.
    • m : mode multiline.
    • s : dotAll, . inclut les sauts de ligne.
    • u : mode Unicode.

📝 Points essentiels

  • Les caractères littéraux sont la base pour construire des expressions précises.
  • Les classes prédéfinies permettent de simplifier la syntaxe pour des ensembles courants.
  • Les classes personnalisées [ ] offrent une flexibilité pour définir des ensembles spécifiques.
  • Les quantificateurs permettent de préciser le nombre de répétitions souhaitées.
  • Les ancres ^ et $ permettent de cibler le début ou la fin d’un texte ou d’une ligne.
  • Les groupes ( ) permettent d’extraire des sous-parties de la correspondance, avec la possibilité de nommer ces groupes.
  • Les assertions de lookaround offrent des moyens avancés de vérifier la présence ou l’absence d’un motif avant ou après une autre.
  • Les marqueurs modifient le comportement de la recherche : recherche globale, insensibilité, mode multiline, etc.

💡 À retenir

Les ancres, classes, quantificateurs et groupes constituent la base pour maîtriser la construction d'expressions régulières précises et puissantes, permettant de rechercher, valider ou extraire efficacement des données dans un texte.

📖 9. Groupes capturants et nommés

🔑 Notions clés & Définitions

  • Groupe capturant () : Séquence de caractères délimitée par des parenthèses, permettant d'extraire une partie du texte correspondant à l'expression régulière. Exemple : (abc) capture "abc".

  • Groupe non capturant (?: ) : Groupe qui délimite une alternative ou une partie de l'expression sans capturer le contenu pour la récupération ultérieure. Syntaxe : (?:...).

  • Groupe nommé (?<nom> ) : Groupe capturant associé à un nom, accessible via la propriété groups après la correspondance. Exemple : (?<jour>\d{2}).

  • Référence à un groupe capturé $n ou $<nom> : Utilisée dans la substitution avec replace() pour réinsérer le contenu capturé. $1, $2, ou $<nom>.

  • Groupe imbriqué : Groupe à l'intérieur d'un autre groupe, permettant d'extraire plusieurs niveaux d'informations. Exemple : (?<date>(?<jour>\d{2})\/(?<mois>\d{2})\/(?<annee>\d{4})).

📝 Points essentiels

  • Les groupes capturants ( ) permettent d'extraire des sous-parties du texte pour traitement ou récupération.

  • Les groupes non capturants (?: ) sont utilisés pour structurer l'expression sans capturer, évitant ainsi de polluer la liste des groupes.

  • Les groupes nommés (?<nom> ) facilitent l'accès aux sous-groupes par nom, rendant le code plus lisible et maintenable.

  • La méthode match() retourne un tableau où chaque groupe capturé est accessible par son index ou son nom via la propriété groups.

  • Les références $n et $<nom> dans replace() permettent de réutiliser les parties capturées dans la chaîne de substitution.

  • La capacité d'imbriquer des groupes permet d'extraire plusieurs informations structurées dans une seule expression.

💡 À retenir

Les groupes capturants et nommés enrichissent considérablement la puissance des expressions régulières, permettant d'extraire, manipuler et structurer efficacement des données complexes à partir de textes.

📖 10. Assertions lookaround

🔑 Notions clés & Définitions

  • Lookahead positif (?=) : Vérifie qu'une certaine expression apparaît après la position courante sans l'inclure dans la correspondance. Exemple : /\d+(?=%)/ trouve un nombre suivi d’un pourcentage sans le capturer.

  • Lookahead négatif (?! ) : Vérifie qu'une expression n'apparaît pas après la position courante. Exemple : /(?<!\$)\d{3}/ assure qu’un nombre de trois chiffres n’est pas précédé d’un symbole dollar.

  • Lookbehind positif (?<=) : Vérifie qu'une expression précède immédiatement la position courante, sans l'inclure dans la correspondance. Exemple : /(?<=\$)\d+/ capture un nombre précédé d’un symbole dollar.

  • Lookbehind négatif (?<! ) : Vérifie qu’une expression n’apparaît pas immédiatement avant la position courante. Exemple : /(?<!\$)\d{3}/ pour un nombre de trois chiffres non précédé d’un dollar.

  • Assertion d’ancrage ^ et $ : Marquent respectivement le début et la fin d’une ligne ou d’un texte, souvent combinés avec le mode m (multiligne) pour gérer plusieurs lignes.

  • Groupe de capture () : Permet d’extraire une partie du texte correspondant à une sous-expression, accessible via la méthode match() ou exec().

📝 Points essentiels

  • Les assertions lookaround permettent de vérifier la présence ou l’absence d’un motif avant ou après une position donnée, sans l’inclure dans la correspondance finale.

  • Elles sont très utiles pour valider des formats complexes, comme des mots de passe, des URLs ou des formats de dates, en imposant des conditions contextuelles.

  • Les assertions de début et fin de ligne (^, $) peuvent être modifiées en mode multiligne (m) pour gérer plusieurs lignes dans un même texte.

  • Les groupes capturants ( ) et non capturants (?: ) permettent d’organiser les alternatives et de capturer des sous-parties pour traitement ultérieur.

  • La syntaxe des assertions lookaround est puissante mais doit être utilisée avec précaution pour éviter des correspondances inattendues ou des performances dégradées.

💡 À retenir

Les assertions lookaround offrent une capacité unique de vérifier des conditions contextuelles dans une expression régulière, permettant de faire des recherches précises sans inclure ces conditions dans la correspondance elle-même.

📖 11. Propriétés Unicode

🔑 Notions clés & Définitions

  • Caractères littéraux : caractères simples dans une expression régulière, correspondant exactement à eux-mêmes. Exemple : /a/ correspond au caractère 'a'.

  • Classes prédéfinies : ensembles de caractères prédéfinis pour simplifier la correspondance. Exemples :

    • \d : chiffre (0-9)
    • \D : non-chiffre
    • \w : caractères alphanumériques (a-z, A-Z, 0-9, _)
    • \W : non-caractère alphanumérique
    • \s : espace, tabulation, saut de ligne
    • \S : non-espace
  • Classes de caractères personnalisées : définies avec [ ] pour inclure ou exclure certains caractères, avec intervalles [a-z], [0-9], ou négations [^ ].

  • Quantificateurs : indiquent le nombre de répétitions d’un motif.

    • {n} : exactement n fois
    • {n,m} : entre n et m fois
    • + : une ou plusieurs fois
    • * : zéro ou plusieurs fois
    • ? : zéro ou une fois
  • Ancres : délimitent le positionnement dans le texte.

    • ^ : début de ligne ou texte
    • $ : fin de ligne ou texte
    • \b : frontière de mot (début ou fin d’un mot)
  • Groupes : permettent de capturer des sous-parties d’une correspondance.

    • () : groupes capturants
    • (?: ) : groupes non capturants
    • (?<nom> ) : groupes nommés
  • Lookaround : vérifient la présence ou l’absence d’un motif avant ou après une position, sans inclure ce motif dans la correspondance.

    • (?= ) : lookahead positif
    • (?! ) : lookahead négatif
    • (?<= ) : lookbehind positif
    • (?<! ) : lookbehind négatif
  • Propriétés Unicode : permettent de cibler des ensembles de caractères spécifiques à une langue ou un script.

    • \p{L} : toutes les lettres
    • \p{Lu} : lettres majuscules
    • \p{Ll} : lettres minuscules
    • \p{Number} : tous les nombres
    • \p{Emoji} : emojis
    • \p{Script=Greek} : caractères grecs
  • Flags (marqueurs) : modifient le comportement de la recherche.

    • g : recherche globale
    • i : insensible à la casse
    • m : mode multilignes
    • u : active l’Unicode
    • s : dotAll, le . inclut les sauts de ligne
    • y : recherche à la position lastIndex

📝 Points essentiels

  • Les classes prédéfinies (\d, \w, \s) facilitent la correspondance avec des types spécifiques de caractères.
  • Les intervalles [a-z] ou [0-9] permettent de définir précisément une gamme de caractères.
  • La quantification {n,m} permet de préciser le nombre exact ou minimal de répétitions.
  • Les ancres ^ et $ sont essentielles pour vérifier le début ou la fin d’un texte ou d’une ligne.
  • La capture de groupes ( ) permet d’extraire des sous-parties du texte, notamment avec des groupes nommés (?<nom> ).
  • Les lookarounds (?= ), (?! ), (?<= ), (?<! ) offrent une puissance supplémentaire pour vérifier la présence ou l’absence d’un motif avant ou après une position.
  • La syntaxe Unicode avec \p{ } et le flag u permet de gérer efficacement les caractères spéciaux et scripts non latins.

💡 À retenir

Les propriétés Unicode offrent une flexibilité exceptionnelle pour manipuler et valider des textes multilingues ou contenant des symboles spécifiques, rendant les expressions régulières puissantes et adaptées à des contextes internationaux.

📊 Tableaux de Synthèse

AspectCaractères littérauxClasses prédéfinies
DéfinitionCorrespondance exacte à un caractère ou motRaccourcis pour ensembles de caractères courants
Exemples/a/ → "a", /1/ → "1"\d (chiffres), \w (mots), \s (espaces)
ÉchappementNon nécessaire sauf si caractère spécial (\.)\ pour utiliser la classe comme caractère littéral
Plages ou intervalles[a-z], [0-9]Non applicable
Utilisation principaleRecherche exacteValidation, recherche de groupes de caractères
AspectQuantificateursAncres et Groupes
DéfinitionPrécise le nombre de répétitions^, $, \b, groupes ( ), groupes nommés (?<nom>)
Exemples{3}, +, *, ?^abc$, (abc), (?<nom>abc)
UtilitéContrôler la répétitionDéfinir positionnement ou capturer des sous-motifs
AspectAssertions lookaroundClasses d'espaces
DéfinitionVérification sans consommation de caractères\s, \S (espaces blancs ou non)
Exemples(?=a), (?!b), (?<=c), (?<!d)\d (chiffres), \w (mots), . (tout sauf saut ligne)
UtilitéVérification de contexte sans capturerGestion des espaces, validation de formats

⚠️ Pièges & Confusions Fréquentes

  1. Confondre . (n'importe quel caractère sauf saut de ligne) et \. (point littéral).
  2. Oublier d’échapper un caractère spécial dans une classe [ ] (ex : -, ^, ]).
  3. Utiliser \w sans considérer qu'il ne couvre pas tous les caractères accentués ou spéciaux.
  4. Mal interpréter la portée des intervalles [a-z] (inclusifs, en fonction de la locale).
  5. Confondre + (une ou plusieurs) et * (zéro ou plusieurs).
  6. Oublier que ^ et $ sont des ancres de début et fin de ligne, pas de mot.
  7. Utiliser incorrectement les groupes capturants ( ) versus groupes non capturants (?: ).
  8. Mal comprendre la différence entre assertions positives (=) et négatives (?! ).
  9. Ne pas activer le mode Unicode (u) quand nécessaire, notamment pour caractères spéciaux.
  10. Confondre \d (chiffres) et \D (non chiffres), ou \s (espaces) et \S (non espaces).

✅ Checklist Examen

  1. Savoir différencier un caractère littéral d’un caractère spécial en regex.
  2. Maîtriser l’échappement des caractères spéciaux (\).
  3. Connaître la signification des classes prédéfinies (\d, \w, \s, etc.).
  4. Savoir utiliser et interpréter les classes de caractères [ ].
  5. Comprendre et appliquer les quantificateurs { }, +, *, ?.
  6. Savoir utiliser les ancres ^ et $ pour délimiter le début et la fin d’un texte ou d’une ligne.
  7. Maîtriser la capture avec ( ) et la référence aux groupes capturés.
  8. Utiliser correctement les assertions lookaround (=), (?! ), (?<=), (?<! ).
  9. Connaître la différence entre les classes d’espaces \s, \S et leur impact.
  10. Vérifier la compatibilité des expressions avec le mode Unicode (u).
  11. Savoir tester une expression régulière avec la méthode test().
  12. Vérifier la compréhension des intervalles [a-z], [0-9] et leur inclusivité.

Metti alla prova le tue conoscenze

Metti alla prova le tue conoscenze su Maîtrise des classes et propriétés en regex con 9 domande a scelta multipla con correzioni dettagliate.

1. Qu'est-ce qu'un caractère littéral dans une expression régulière ?

2. Qu'est-ce qu'un caractère spécial en regex et comment peut-on le faire correspondre littéralement dans une expression régulière?

Fai il quiz →

Ripassa con le flashcard

Memorizza i concetti chiave di Maîtrise des classes et propriétés en regex con 10 flashcard interattive.

Caractères littéraux — définition ?

Correspondance exacte à un caractère.

Caractère littéral — définition?

Symbole ou lettre correspondant exactement au texte.

Classes prédéfinies — rôle ?

Simplifient la recherche de caractères courants.

Vedi le flashcard →

Similar courses

Crea le tue schede di revisione

Importa il tuo corso e l'AI genera schede, quiz e flashcard in 30 secondi.

Generatore di schede