6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://ww

6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 1/20 (https://www.lucaswillems.com/img/lcswillems- 400x400.png) LUCAS WILLEMS (https://www.lucaswillems.com/fr) Un étudiant de 21 ans passionné par les maths et la programmation Accueil (https://www.lucaswillems.com/fr) Projets (https://www.lucaswillems.com/fr/projects) Articles (https://www.lucaswillems.com/fr/articles) Outils (https://www.lucaswillems.com/fr/tools) A propos (https://www.lucaswillems.com/fr/about) Contact (https://www.lucaswillems.com/fr/contact) Tutoriel pour maîtriser les expressions régulières Les expressions régulières, ou plus communément regex (contraction de regular expression) permettent de représenter des modèles de chaînes de caractère. Ce sont des outils très puissants et très utilisés : on peut les retrouver dans de nombreux langages comme le PHP, MySQL, Javascript... ou encore dans des logiciels d'édition de code ! Cependant, si cet outil est très puissant, il est relativement difficile à appréhender au début car les expressions régulières peuvent prendre des formes de ce genre : #^[a-zA-Z-]+@[a-zA-Z-]+\.[a-zA-Z]{2,6}$# Cet expression régulière permettant, par exemple, de représenter toutes les adresses emails contenues dans un texte. Vous pouvez donc voir que la syntaxe est peu commune et qu'un petit tutoriel s'impose pour pouvoir comprendre et utiliser le concept des expressions régulières. Pour suivre ce tutoriel, il vous faudra utiliser un éditeur de code qui comprend les expressions régulières : si vous n'en avez pas encore un, vous pouvez télécharger et installer notepad++ (http://notepad-plus-plus.org/fr/). Follow 261 followers Like 959 Article We use cookies to track usage and preferences. I Understand () 6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 2/20 Sommaire 1 La limite des recherches classiques 2 Regex simple 2.1 Les caractères de début et fin de chaîne 2.2 Le caractères OU 3 Les ensembles de caractères 3.1 Les différents ensembles 3.2 Les ensembles préconçus 4 Les quantificateurs 5 L'échappement 6 Mise en pratique 6.1 Vérifier si un numéro de téléphone est correcte 6.2 Détecter les liens et les rendre cliquable La limite des recherches classiques Pour commencer simplement, ouvrons notre éditeur de code et collons y le texte suivant : Bonjour et au revoir ! Je m'appelle John Doe, j'ai 27 ans, j'habite en France et travaille depuis que j'ai 20 ans. Ma passion : écrire des mots, mits, mets, mats, mat... Pour me contacter, vous pouvez envoyer un email à contact@johndoe.fr ou contact@johndoe.com ou bien m'appeler au 06 07 08 09 10. Vous pouvez aussi aller voir mon blog à l'adresse johndoe-blog.fr. Bonjour et au revoir We use cookies to track usage and preferences. I Understand () 6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 3/20 Puis, recherchons y, en rendant la recherche sensible à la casse (voir image précédente), le mot Bonjour. La façon la plus simple est alors de faire un simple Ctrl+F comme on en a l'habitude : pas besoin d'utiliser les regex. Suite à cette recherche, les 2 occurrences de Bonjour devraient être sélectionné. Normal. Maintenant, imaginons que nous voulons rechercher, cette fois-ci, seulement le mot Bonjour qui se trouve au tout début du texte. Comment faire avec un simple Ctrl+F ? Ce n'est tout simplement pas possible : voici donc la limite des recherches classiques. Pour faire des recherches plus complexes, il nous faudra utiliser les regex. Regex simple Reprenons notre recherche du mot Bonjour du début de texte, mais cette fois, en utilisant les regex, et plus particulièrement les caractères de début et fin de chaîne. Les caractères de début et fin de chaîne Les caractères de début et de fin de chaîne, respectivement ^ et $, représentent, comme leur nom l'indique, le début et la fin de la chaîne. Donc, si nous retournons dans notre éditeur de code, que nous faisons de nouveau Ctrl+F, que nous activons les expressions régulières au passage et que nous entrons We use cookies to track usage and preferences. I Understand () 6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 4/20 dans le champ de recherche la regex suivante : ^Bonjour L'éditeur de code devrait sélectionner seulement le mot Bonjour se trouvant au début du texte. Et si nous remplaçons la regex que nous venons d'entrer par celle-ci : revoir$ L'éditeur de code devrait sélectionner seulement le mot revoir qui se situe à la fin du texte. Le caractères OU Imaginons maintenant que nous voulons rechercher, dans le texte, les mots Bonjour et revoir, c'est à dire le mot Bonjour OU le mot revoir : nous devrons alors utiliser la barre verticale |. Ainsi la regex suivante sélectionnera toutes les occurrences de Bonjour et revoir : Bonjour|revoir We use cookies to track usage and preferences. I Understand () 6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 5/20 Il est aussi possible de sélectionner les occurrences du mot Bonjour se trouvant au début du texte et du mot revoir se trouvant à la fin, ce qui revient à fusionner, en les séparant par une barre verticale, les 2 regex vues dans la sous partie précédente. Voici donc la regex correspondant : ^Bonjour|revoir$ Les ensembles de caractères Passons maintenant à des regex un peu plus complexes, et beaucoup plus puissantes, en nous attardons sur les ensembles de caractères. Les différents ensembles Maintenant, nous voulons chercher dans notre texte, les mots mots, mats et mits. Nous pourrions très bien utiliser cette regex : mots|mats|mits Mais il y a plus simple et ce grâce aux ensembles de caractères qui font office, en quelques sortes, de OU en plus courts et plus puissants. Un ensemble de caractère est délimité par des crochets dans lesquels se trouvent les caractères faisant parti du OU. Ainsi, la regex suivante : m[oai]ts est beaucoup plus succincte que la précédente et sélectionne les mêmes mots. Cette regex peut être expliciter par la phrase suivante : "Sélectionne les parties du texte où il y a un m, suivi d'un o ou d'un a ou d'un i, suivi d'un t, suivi d'un s." Les ensembles de caractères permettent aussi d'exclure des caractères grâce à l'accent circonflexe ^. La regex suivante : m[^oai]ts sélectionnera, cette fois-ci, seulement le mots mets et peut être explicitée par la phrase suivante : "Sélectionne les parties du texte où il y a un m, suivi d'une lettre qui n'est ni o, ni a, ni i, suivi d'un t, suivi d'un s." Enfin, imaginons que nous voulons sélectionner tous les mots commençant par un m, suivi de n'importe quelle lettre, suivi d'un t, suivi d'un s. La regex qui nous viendrait à l'esprit serait une regex de ce type : m[abcdefghijklmnopqrstuvwxyz]ts La regex serait donc longue et fastidieuse à écrire, surtout que pour celle-ci, seules les minuscules ont été sélectionnées ! Heureusement, un moyen plus simple existe pour écrire de telles regex : cela s'appelle les intervalles et se note [debut intervalle-fin intervalle]. Voici quelques petites exemples : We use cookies to track usage and preferences. I Understand () 6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 6/20 Intervalle Equivalent Traduction [a-z] [abcdefghijklmonpqrstuvwxyz] Lettres minuscules de a à z [A-Z] [ABCDEFGHIJKLMNOPQRSTUVWXYZ] Lettres majuscules de A à Z [0-9] [0123456789] Chiffres de 0 à 9 [a-z0-9] [abcdefghijklmonpqrstuvwxyz0123456789] Lettres minuscules de a à z ou chiffres de 0 à 9 Reprenons donc notre regex et utilisons les intervalles. Nous obtenons alors : m[a-z]ts ce qui sélectionne le mot mets en plus des mots mots, mats et mits. Les ensembles préconçus Un ensemble préconçu est une façon très simple de représenter plusieurs intervalles. Voici quelques exemples : Ensemble Equivalent . Absolument n'importe quel charactère \w [a-zA-Z0-9_] \d [0-9] \n Un retour à la ligne \t Une tabulation Ainsi, cette regex : m\wts sélectionnera les mêmes éléments que celle-ci : m[a-zA-Z0-9_]ts Les quantificateurs Nous venons de voir qu'un ensemble de caractères permet de définir de manière très simple les valeurs possible d'un caractère. Mais qu'en est-il si l'on définir les mêmes valeurs possibles pour plusieurs caractères ? Par exemple, si l'on veut sélectionner les parties du texte où il y a un m, suivi d'un a, suivi de 3 fois n'importe quelle lettre minuscule, est-on obligé d'utiliser une regex de ce type : We use cookies to track usage and preferences. I Understand () 6/14/2019 Tutoriel pour maîtriser les expressions régulières (regex) https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres 7/20 ma[a-z][a-z][a-z] Non. Il existe une méthode plus simple qui consiste à utiliser les quantificateurs : ce sont des caractères qui indiquent le nombre de répétition du caractère ou de la suite de caractère qui les précèdent. Le quantificateur, dans sa forme explicite, peut s'écrire de 4 façons : {min,max} : le nombre de répétition varie entre la valeur minimale et la valeur maximale incluses {min,} : le nombre de répétition varie entre la valeur minimale incluse et l'infini {,max} : le nombre de répétition varie entre 0 et la valeur maximale incluse {nombre} : le nombre de répétition correspond au nombre marqué entre les accolades Par exemple, la regex suivante : [a-zA-Z]{6} permet de sélectionner les parties du texte où il y a 6 lettres consécutives. Celle-ci : [0-9]{2,4} permet de sélectionner les parties du texte où il y a entre 2 et 4 chiffres consécutifs. Comme pour les ensembles de caractères, il existe aussi des quantificateurs préconçus. En voici la liste : Quantificateur Traduction Équivalent * 0 ou plusieurs répétitions {0,} + uploads/s3/ tutoriel-pour-maitriser-les-expressions-regulieres-regex.pdf

  • 130
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager