L'expression Regex peut être pénible. Enfin, parfois !
Découvrons les expressions régulières et leurs modèles. Nous allons nous pencher sur ces modèles qui ressemblent à une soupe alambiquée de caractères. Nous verrons ce que signifie chaque caractère d'une expression régulière.
Après avoir lu cet article, vous serez en mesure de créer vos expressions régulières et de les utiliser à votre guise. À la fin de l'article, nous dresserons également la liste de certains des outils en ligne de gestion des expressions régulières. RegEx des outils de test afin que vous puissiez créer votre RegEx en fonction de vos besoins et le tester à l'aide de ces outils.
Introduction
Les expressions régulières, ou plus communément appelées RegEx, sont des séquences de caractères qui peuvent être utilisées comme motifs pour rechercher des caractères ou des chaînes de caractères.
Par exemple, pour déterminer si une chaîne de caractères ou une phrase contient le mot "pomme"nous pouvons utiliser la regex "/apple"pour effectuer une recherche à l'intérieur de la chaîne. Autre exemple, nous pouvons utiliser "/[0-9]
"pour vérifier si une chaîne de caractères donnée contient un nombre compris entre 0 et 9.
Expressions régulières et leur utilisation
Les expressions régulières sont largement utilisées à diverses fins dans les opérations modernes liées au web. La validation des formulaires web, les moteurs de recherche web, les analyseurs lexicaux dans les sites web sont autant d'exemples d'utilisation des expressions régulières. IDE'sLes expressions régulières sont fréquemment utilisées, entre autres, dans les éditeurs de texte et les éditeurs de documents.
Nous avons tous utilisé "CTRL + F
"L'expression régulière est souvent utilisée pour rechercher dans un document ou un morceau de code un mot, une phrase ou une expression particulière. Cette opération peut être considérée comme un exemple très courant de l'utilisation des expressions régulières.
Avant d'aller plus loin, examinons une expression régulière très couramment utilisée.
Peux-tu deviner 🤔 le RegEX ci-dessous à quoi il sert ?
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
Ne vous inquiétez pas si vous ne pouvez pas le deviner. Je suis sûr que vous serez capable de le deviner à la fin de cet article.
Commençons par les points A, B et C de RegEx.
Jetons
Pour commencer, examinons les différents symboles de la Regex présentée ci-dessus.
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
Si nous examinons l'expression rationnelle ci-dessus, nous constatons qu'elle est composée de nombreux symboles, caractères ou jetons. Voyons ce qu'ils signifient :
Jeton |
Signification |
^ |
Ce jeton indique le début d'une chaîne de caractères. |
(…) |
Il s'agit d'un groupe où tout ce qui est indiqué à l'intérieur de (...) est saisi. |
[…] |
Le symbole [] entoure les caractères dont chacun peut faire l'objet d'une recherche. Par exemple, [abc] correspondra soit à a, soit à b, soit à c. |
a-z | L'ensemble des minuscules alphabets de a à z. Nous devons garder à l'esprit que Regex est sensible à la casse. |
A-Z | L'ensemble des majuscules des personnages de A à Z. |
0-9 | Les chiffres de 0 à 9. |
_ | Cela correspondra au caractère _. |
\ | Il s'agit du caractère d'échappement. |
\. | Cela correspond au caractère "." littéralement. Il est utilisé parce que le symbole "." dans les expressions rationnelles est un jeton en soi qui correspond à n'importe quel caractère. |
+ | Il s'agit d'un quantificateur. Il correspond à un ou plusieurs caractères avec lesquels il est utilisé. Par exemple, a+ signifie une ou plusieurs occurrences du caractère a. |
\- | Cela correspondra au caractère "-". |
@ | Cela correspondra au caractère "@". |
{} | Il s'agit d'un autre quantificateur. Il est utilisé pour indiquer le nombre d'occurrences d'un caractère. Par exemple, a{3} signifie exactement 3 a. |
$ | Il indique la fin d'une chaîne de caractères. |
Décomposition du motif Regex donné
Maintenant, armés de ces connaissances préliminaires sur les jetons, essayons de décoder l'expression régulière ci-dessus :
<small><span style="color: #ff0000;"><span style="color: #000000;">^([a-zA-Z0-9_\-\N.]+)</span></span></small>
signifie que nous recherchons une chaîne qui commence par au moins un ou plusieurs caractères alphanumériques majuscules ou minuscules, traits de soulignement, traits d'union ou points. Par exemple, tout ce qui ressemble à nom_utilisateur.01 correspondra au motif. Nous devons nous rappeler qu'il n'est pas nécessaire d'inclure tous les symboles, mais seulement un caractère dans[a-zA-Z0-9_\-\.]
fera l'affaire.- Les @ correspond à une seule occurrence de @. En ajoutant à l'exemple précédent, quelque chose comme nom_utilisateur.01@ s'adaptera.
([a-zA-Z0-9_\-\.]+)
est similaire au premier point. Il signifie également que nous recherchons une chaîne de caractères contenant au moins un ou plusieurs caractères alphanumériques, traits de soulignement, traits d'union ou points. Poursuivons l'exemple, nom_utilisateur.01@gmail s'adaptera ici.- Comme vous l'avez peut-être déjà deviné, il s'agit d'un modèle d'email. Par ailleurs, \. correspond au caractère unique ".". Si nous continuons avec l'exemple en cours, quelque chose comme nom_utilisateur.01@gmail.
([a-zA-Z]{2,5})$
cela signifie que la chaîne doit se terminer par 2 à 5 caractères alphabétiques, en majuscules ou en minuscules. Si nous ajoutons .com à l'exemple précédent, nous obtenons user_name.01@gmail.comqui est le modèle habituel d'une chaîne de courrier électronique.
En combinant tous les éléments ci-dessus, nous pouvons voir que nous recherchons une chaîne d'identifiant d'email. Nous pouvons maintenant utiliser cette expression pour valider tout courriel id. Si l'adresse électronique de notre test correspond à ce modèle, nous pouvons dire qu'il s'agit d'une adresse électronique valide.
P.S. - Il s'agit d'un modèle pour les identifiants de courrier électronique les plus courants sur le web.
Types de jetons
De nombreux tokens peuvent être utilisés dans diverses combinaisons au sein d'une Regex pour décrire une grande variété d'expressions. Nous allons examiner ci-dessous les différents types de jetons utilisés dans les expressions régulières. En outre, nous allons également examiner les jetons les plus couramment utilisés dans chaque catégorie.
Jetons de base
Commençons par les jetons de base. Ces jetons sont utilisés dans presque toutes les expressions régulières. C'est pourquoi nous devons d'abord apprendre à les connaître.
Jeton | Signification |
\r |
Cela correspond au caractère de retour chariot. |
\0 |
Il correspond au caractère nul. |
\n |
Il s'agit d'une nouvelle ligne. |
\t |
Cela correspond à un onglet. |
Classes de personnages
Passons maintenant aux jetons de caractères. Ils sont utilisés pour faire correspondre les alphabets, les chiffres et d'autres caractères spéciaux.
Jeton |
Signification |
a |
Cette recherche correspond littéralement au caractère a. De même, tous les alphabets et les chiffres, lorsqu'ils sont utilisés isolément, recherchent le caractère spécifique lui-même. |
abc |
Il correspond à la chaîne abc. |
[abc] |
Elle recherche un seul caractère parmi a, b ou c. |
[^abc] |
Cela correspond à n'importe quel caractère sauf a ou b ou c. |
[a-z] |
Un caractère minuscule compris entre a et z |
[^a-z] |
Tout caractère n'appartenant pas à la gamme de a à z. Cela inclut également les caractères majuscules. |
[A-Z] |
Un caractère majuscule compris entre A et Z. |
[^A-Z] |
Un caractère qui n'est pas compris entre A et Z. |
[0-9] |
Tout nombre compris entre 0 et 9 |
[^0-9] |
Un caractère n'appartenant pas à l'intervalle 0 à 9 |
[a-zA-Z0-9] |
Il s'agit d'un caractère qui peut être une minuscule comprise entre a et z. ou tout caractère compris entre A et Z ou tout chiffre compris entre 0 et 9 |
[^a-zA-Z0-9] |
Tout personnage n'entrant pas dans la catégorie précédente. |
. |
Tout caractère unique |
\s |
Il est utilisé pour rechercher tout caractère d'espacement. |
\S |
Il est utilisé pour rechercher tout caractère autre qu'un espace blanc. |
\d |
Cela correspond à n'importe quel chiffre |
\D |
Il s'agit d'une correspondance pour tout caractère non numérique |
\w |
Il correspond à n'importe quel caractère d'un mot |
\W |
Il correspond à tout caractère autre qu'un mot |
$ |
Ceci indique la fin d'une chaîne de caractères |
\b |
Cela correspond à une limite de mot |
\B |
Il est utilisé pour faire correspondre une limite de non-mot. |
Quantificateurs
Cette classe spéciale de jetons est utilisée pour vérifier le nombre d'occurrences consécutives d'un caractère, d'une chaîne de caractères ou d'un nombre. Ils sont utilisés conjointement avec les autres jetons.
Examinons quelques quantificateurs courants.
Jetons |
Signification |
a ? |
Elle correspond à zéro ou une occurrence de a. |
a* |
Ceci correspond à zéro ou plusieurs occurrences (consécutives) de a. |
a+ |
Il s'agit d'au moins une ou plusieurs occurrences consécutives de a. |
a{5} |
Il recherche exactement cinq occurrences consécutives de la lettre a. |
a{5, } |
Il s'agit d'au moins cinq occurrences consécutives ou plus d'un. |
a{5, 7} |
Il s'agit de rechercher un nombre quelconque de "a" consécutifs compris entre 5 et 7. |
Groupes
Comme leur nom l'indique, ces jetons sont groupés.
Jetons |
Signification |
(...) |
Cela permet de capturer tout ce qui se trouve entre les parenthèses. |
(a|b) |
Il s'agit d'une correspondance entre a et b. |
(?:…) | Correspond à tout ce qui est compris entre les crochets |
( ?(1)oui|non) |
Cela correspond à une déclaration conditionnelle. |
Drapeaux
Il s'agit d'instructions spéciales données au moteur de recherche de motifs lors de la recherche d'une correspondance.
Jetons | Signification |
g |
Correspondance globale. Cette fonction permet d'effectuer une recherche jusqu'à ce que le moteur de recherche ne trouve plus de correspondance, c'est-à-dire jusqu'à la fin de la chaîne ou du groupe de chaînes donné. |
m |
Correspondance multiligne, c'est-à-dire ligne par ligne. |
x |
Indique au moteur de recherche d'ignorer les espaces lors de la recherche. |
X |
Il est utilisé pour les correspondances étendues. |
s |
Cela correspond à une seule ligne. |
i |
Elle est utilisée pour la correspondance sans tenir compte des majuscules et des minuscules. |
u |
Pour les caractères Unicode. |
Ancres
Instructions supplémentaires pour le moteur concernant les positions.
Jetons |
Signification |
^ |
Ceci indique le début d'une chaîne de caractères |
\A |
Il indique également le début d'une chaîne de caractères |
\Z |
Le symbole de la fin d'une chaîne de caractères. |
\z |
Le symbole de la fin absolue d'une chaîne de caractères. |
\G |
Il s'agit du début d'un match. |
Expressions régulières couramment utilisées
Les expressions régulières sont largement utilisées sur l'internet. Qu'il s'agisse de valider des formulaires ou de rechercher des données contenant un ou plusieurs mots-clés particuliers, les expressions régulières sont presque indissociables des applications informatiques modernes.
Examinons quelques exemples familiers d'utilisation des expressions régulières.
Correspondance avec un numéro de téléphone
Voyons quel est le schéma d'un numéro de téléphone utilisé en Inde. L'indicatif de pays vient en premier. Il contient généralement le caractère "+" suivi du chiffre 91, qui est l'indicatif de pays de l'Inde. En outre, les numéros de téléphone indiens commencent généralement par 6, 7, 8 ou 9. Il est suivi de 9 autres chiffres.
Ainsi, une expression rationnelle valable pour un numéro de téléphone portable indien serait la suivante.
^(\+91[\-\s]?)?[0]?(91)?[6-9]\d{9}$
Tester la force des mots de passe
La plupart des sites web nous recommandent de fournir une mot de passe qui contient une combinaison de chiffres, de majuscules, de minuscules et de symboles. Il doit également comporter un nombre minimum de caractères - 6 ou 8. Le mot de passe devient ainsi très difficile à déchiffrer.
Tout mot de passe conforme à cette règle peut être généré ou validé à l'aide d'une expression régulière.
^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})
Correspondance des URL
Les URL sont le moyen le plus courant d'utiliser l'internet et de visiter rapidement la page web que l'on souhaite. Presque tous les sites web ont une URL. Par conséquent, chaque URL est normalisé et suit un modèle défini. Chaque URL suit le protocole HTTP ou HTTPs, suivi de "://"et le "www"souvent. Puis le nom du site web suivi d'un .com ou .net ou .org etc.
Pour tester la validité d'une URL, nous pouvons utiliser une expression rationnelle comme celle présentée ci-dessous.
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
Formats de la date et de l'heure
Les formats de date et d'heure sont également très couramment utilisés sur le web. Il existe de nombreux formats de dates utilisés par une variété d'applications, de logiciels ou de systèmes. Les dates doivent toujours être utilisées dans un format qui les rend utilisables par l'utilisateur ou l'application qui tente de les lire.
Une date au format jj-mm-aaaa peut être validée à l'aide d'une expression régulière qui peut être celle indiquée ci-dessous.
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
Explorons maintenant quelques-unes des outils RegEx en ligne ce qui peut s'avérer pratique pour la construction et le dépannage.
Si vous souhaitez en savoir plus sur les expressions régulières, leurs exemples et leurs utilisations avancées, voici une liste de sites web auxquels vous pouvez toujours vous référer :
Regex101

Regex101 est un excellent guide de référence et un outil interactif pour créer vos expressions régulières, il peut vous aider à démarrer très rapidement avec les expressions régulières.
Nous pouvons ainsi tester RegEx pour les langues suivantes.
- PCRE (PHP)
- ECMAScript (JavaScript)
- Python
- GoLang
Il prend en charge les fonctionnalités de RegEx telles que la correspondance, la substitution et les tests unitaires. En outre, il est possible de sauvegarder les anciens RegEx testés.
FreeFormatter

FreeFormatter est basé sur JavaScript et utilise la fonction Bibliothèque XRegExp pour des fonctionnalités améliorées. Il facilite le test d'un RegEx par rapport à une correspondance ainsi que le remplacement d'une correspondance. Il prend en charge les drapeaux suivants, qui peuvent être utilisés en fonction des besoins lors du test d'un RegEx
- i - Insensible à la casse
- m - Multiligne
- g - Global (ne pas s'arrêter au premier match)
- s - Le point correspond à tout ce qui INCLUT les sauts de ligne (XRegExp uniquement).
Mots croisés sur les expressions rationnelles

Si les Regex et les puzzles vous intéressent, voici la site à consulter. Il propose une série de puzzles amusants et interactifs. Ils vous aideront certainement à en apprendre davantage sur les expressions régulières.
- Optimisé pour les téléphones et la résolution de puzzles RegEx en déplacement.
- Un tutoriel pas à pas, qui vous apprend les différents symboles et modèles RegEx.
- Faites travailler vos méninges sur des puzzles RegEx cubistes à palindrome 2D.
- Large éventail de puzzles RegEx avec des difficultés allant du débutant à l'expert.
RegExr

RegExr est un site web qui vous permet de vous salir les mains avec Regex. Vous pouvez écrire des expressions régulières, faire correspondre des motifs et vous amuser avec cet équivalent Codepen des expressions régulières.
Caractéristiques
- Prend en charge JavaScript et PHP/PCRE RegEx.
- Les résultats sont mis à jour en temps réel au fur et à mesure que vous tapez.
- Survolez une correspondance ou une expression pour plus de détails.
- Valider les modèles à l'aide de séries de tests.
- Enregistrez et partagez vos expressions avec d'autres personnes.
- Référence RegEx complète avec aide et exemples.
Pythex
Il s'agit d'un testeur d'expressions régulières basé sur Python. Pythex est un moyen rapide de tester vos expressions régulières en Python. Il est livré avec quatre drapeaux, à savoir
- Ignorer le cas
- Multiligne
- DotAll
- Verbose
Rubulaire

Rubulaire est un éditeur d'expressions régulières basé sur Ruby. Il supporte et utilise la méthode Ruby 2.5.7 et suivantes.
Debuggex

Il est basé sur JavaScript et supporte RegEx pour Python et Perl Compatible Regular Expressions (PCRE). En utilisant ce outil en ligne nous pouvons intégrer notre RegEx à StackOverflow. Il permet de partager le résultat du RegEx en créant un lien unique pour chaque test RegEx.
ExtendsClass

ExtendsClass est une boîte à outils pour les développeurs. Elle permet de réaliser des tests RegEx dans les langues suivantes.
- JavaScript
- Python (3.4)
- Rubis (2.1)
- Java (JDK 14)
- PHP (7)
Testeur RegEx

Le présent testeur gratuit d'expressions régulières vous permet de tester vos expressions régulières par rapport à n'importe quelle entrée de votre choix et met clairement en évidence toutes les correspondances. Grâce à cela, nous pouvons sauvegarder l'ancienne RegEx testée pour une référence ultérieure. De plus, il prend en charge les RegEx JavaScript et PCRE.
Boîte à outils Web

Boîte à outils Web contient un ensemble d'outils utilitaires, dont le testeur RegEx. Nous pouvons y saisir notre RegEx et le tester par rapport à une valeur. Il permet également de remplacer, de faire correspondre et de copier les expressions. En outre, il permet d'effectuer une correspondance globale ou sensible à la casse.
Ressources pédagogiques
Si vous souhaitez apprendre le RegEx, voici quelques-uns des meilleurs cours disponibles en ligne.
Coursera
Coursera propose des cours de projet guidés intéressants qui vous permettront d'acquérir une expérience pratique de l'utilisation de RegEx. La plupart de ces cours durent environ une heure et vous travaillerez étape par étape avec l'instructeur. Voici quelques-uns des meilleurs projets RegEx.
- Expressions régulières en Python
- Extraire des données textuelles avec Java et RegEx
- Extraire des données textuelles avec Bash et RegEx
Udemy
Udemy propose une Cours complet de RegEx pour les débutants qui vous apprend les bases en 3,5 heures et une heure de cours. Cours Python RegEx avec projets qui vous permettra d'acquérir une expérience pratique de l'utilisation de RegEx pour la validation des entrées, le traitement et la transformation des données.
Conclusion
Nous avons appris les expressions régulières, quelques exemples courants et certains des outils en ligne. outils de test. Avec ces connaissances, nous pouvons créer nos expressions régulières et les utiliser dans nos applications.