L'expression Regex peut être pénible. Eh bien, parfois!
Découvrons les expressions régulières et leurs modèles. Nous allons examiner de tels modèles qui semblent être une soupe alambiquée de personnages. Nous verrons ce que signifie chaque caractère dans une expression régulière.
Après avoir lu cet article, vous pourrez créer vos expressions régulières et les utiliser à votre guise. En fin de compte, nous énumérerons également certains des outils de test RegEx en ligne afin que, en fonction des besoins, vous puissiez créer votre RegEx et le tester à l'aide de ces outils.
Introduction
Expressions régulières ou comme on l'appelle communément - RegEx est une séquence de caractères qui peut être utilisée comme modèle pour rechercher des caractères ou des chaînes.
Par exemple, pour déterminer si une chaîne ou une phrase contient le mot "pomme"Nous pouvons utiliser l'expression régulière"/Pomme”Pour rechercher dans la chaîne. Comme autre exemple, nous pouvons utiliser "/[0-9]
”Pour vérifier si une chaîne 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 à des fins diverses dans les opérations Web modernes. Validation de formulaires Web, moteurs de recherche Web, analyseurs lexicaux en IDE, les éditeurs de texte et les éditeurs de documents sont parmi quelques exemples où les expressions régulières sont fréquemment utilisées.
Nous avons tous utilisé "CTRL + F
”Plusieurs fois pour rechercher dans un document ou un morceau de code pour trouver un mot particulier, une phrase ou une expression. Cette opération peut être signalée comme un exemple très courant d'utilisation d'expressions régulières.
Avant d'aller plus loin, jetons un œil à une expression régulière très couramment utilisée.
Pouvez-vous deviner 🤔 le RegEX ci-dessous à quoi sert-il?
^([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 seriez capable de deviner à la fin de cet article.
Commençons par A, B, C de RegEx.
Tokens
Pour commencer, examinons les différents symboles de l'expression régulière illustrés ci-dessus.
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
Si nous regardons l'expression régulière donnée ci-dessus, nous pouvons voir qu'elle est composée de nombreux symboles ou caractères ou jetons. Découvrons ce qu'ils signifient:
Token |
Sens |
^ |
Ce jeton indique le début d'une chaîne. |
(...) |
Cela dénote un groupe où tout ce qui est donné à l'intérieur (…) est capturé. |
[...] |
Le [] renferme des caractères dont n'importe lequel peut être mis en correspondance. Par exemple - [abc] correspondra à a ou b ou c. |
AZ | L'ensemble des minuscule alphabets de a à z. Nous devons garder à l'esprit que Regex est sensible à la casse. |
A-Z | L'ensemble des majuscule caractères de A à Z. |
0-9 | Les chiffres de 0 à 9. |
_ | Cela correspondra au caractère _. |
\ | C'est le caractère d'échappement. |
\. | Cela correspond au caractère "." au sens propre. Ceci est utilisé parce que le symbole "." dans regex est un jeton en lui-même qui correspond à n'importe quel caractère |
+ | Ceci est un quantificateur. Cela correspond à un ou plusieurs caractères avec lesquels il est utilisé. Par exemple, un + signifie une ou plusieurs occurrences du caractère a. |
\- | Cela correspondra au caractère «-». |
@ | Cela correspondra au caractère «@». |
{} | Ceci est un autre quantificateur. Il est utilisé pour indiquer le nombre d'occurrences d'un caractère. Par exemple, un {3} signifie exactement 3 a. |
$ | Cela indique la fin d'une chaîne. |
Décomposition du modèle Regex donné
Maintenant, armés de cette connaissance préliminaire des 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_\-\.]+)</span></span></small>
signifie que nous recherchons une chaîne commençant 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 modèle. Nous devons nous rappeler qu'ici, il n'est pas nécessaire d'inclure tous les symboles, mais un seul caractère dans[a-zA-Z0-9_\-\.]
ça ira.- La solution @ le caractère correspond à une seule occurrence de @. Ajout à l'exemple précédent, quelque chose comme nom_utilisateur.01@ fera l'affaire.
([a-zA-Z0-9_\-\.]+)
est similaire au premier point. Cela signifie également que nous recherchons une chaîne contenant au moins un ou plusieurs caractères alphanumériques, traits de soulignement, traits d'union ou points. Ajout à l'exemple, nom_utilisateur.01@gmail ira ici.- Comme vous l'avez peut-être déjà deviné, nous faisons allusion à un modèle d'e-mail. Passant, \. correspond au single "." personnage. 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 pouvons obtenir nom_utilisateur.01@gmail.com, qui est le modèle courant d'une chaîne d'e-mail.
En combinant tout ce qui précède, nous pouvons voir que nous recherchons une chaîne d'identifiant de messagerie. Nous pouvons maintenant utiliser cette expression pour valider n'importe quel e-mail identifiant. Si notre identifiant de messagerie de test correspond à ce modèle, nous pouvons dire qu'il s'agit d'un identifiant de messagerie valide.
PS. - Il s'agit d'un modèle pour les identifiants de messagerie les plus courants sur le Web.
Types de jetons
De nombreux jetons peuvent être utilisés dans diverses combinaisons dans un Regex pour décrire une grande variété d'expressions. Ci-dessous, nous allons jeter un coup d'œil aux 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 avec presque toutes les expressions régulières. Par conséquent, nous devons d'abord en apprendre davantage.
Token | Sens |
\r |
Cela correspond au caractère de retour chariot. |
\0 |
Il correspond au caractère nul. |
\n |
Cela cherche une nouvelle ligne. |
\t |
Cela correspond à un onglet. |
Classes de personnages
Passons à autre chose, regardons les jetons de personnage. Ils sont utilisés pour faire correspondre les alphabets, les nombres et autres caractères spéciaux.
Token |
Sens |
a |
Cela correspond littéralement au caractère a. De même, tous les alphabets et nombres utilisés isolément recherchent le caractère spécifique lui-même. |
abc |
Il correspond à la chaîne abc. |
[abc] |
Cela recherche un seul caractère parmi a, b ou c. |
[^ abc] |
Cela correspond à n'importe quel caractère sauf a, b ou c. |
[az] |
Un caractère minuscule dans la plage de a à z |
[^ az] |
Tout caractère non compris entre a et z. Cela inclut également les caractères majuscules. |
[AZ] |
Un caractère majuscule entre A et Z. |
[^ AZ] |
Un caractère pas entre A et Z. |
[0-9] |
Tout nombre compris entre 0 et 9 |
[^ 0-9] |
Un caractère non compris entre 0 et 9 |
[a-zA-Z0-9] |
Cela correspond à un caractère qui peut être un caractère minuscule entre a et z or tout caractère entre A et Z or tout nombre entre 0 et 9 |
[^ a-zA-Z0-9] |
Tout personnage qui ne rentre pas dans la catégorie précédente. |
. |
Tout caractère unique |
\s |
Ceci est utilisé pour rechercher n'importe quel caractère d'espacement. |
\S |
Ceci est utilisé pour rechercher tout caractère non blanc. |
\d |
Cela correspond à n'importe quel chiffre |
\D |
Cela correspond à tout non-chiffre |
\w |
Il correspond à n'importe quel caractère de mot |
\W |
Il correspond à n'importe quel caractère autre qu'un mot |
$ |
Ceci indique la fin d'une chaîne |
\b |
Cela correspond à une limite de mot |
\B |
Ceci est utilisé pour faire correspondre une limite non-mot |
Quantificateurs
Cette classe spéciale de jetons est utilisée pour faire correspondre le nombre d'occurrences consécutives d'un caractère ou d'une chaîne ou d'un nombre. Ils sont utilisés en conjonction avec les autres jetons.
Regardons quelques quantificateurs courants.
Tokens |
Sens |
a? |
Cela correspond à zéro ou une occurrence de a. |
a* |
Cela correspond à zéro ou plusieurs occurrences (consécutives) de a. |
a+ |
Ceci concerne au moins une ou plusieurs occurrences consécutives de a. |
a {5} |
Cela recherche exactement cinq occurrences consécutives de la lettre a. |
a {5,} |
Ceci concerne au moins cinq occurrences consécutives ou plus de a. |
a {5, 7} |
Cela recherche n'importe quel nombre de a consécutifs entre 5 et 7. |
Groupes
Ces jetons correspondront en groupes comme son nom l'indique.
Tokens |
Sens |
(...) |
Cela capture tout ce qui est entre parenthèses. |
(a | b) |
Cela correspond à a ou b. |
(?:…) | Correspond à tout ce qui est entre parenthèses |
(? (1) oui | non) |
Cela correspond à une instruction conditionnelle. |
Drapeaux
Ce sont des instructions spéciales données au moteur de correspondance de motifs lors de la recherche d'une correspondance.
Tokens | Sens |
g |
Match global. Cela cherchera jusqu'à ce que le moteur de correspondance 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 ie, ligne par ligne. |
x |
Indique au moteur d'ignorer les espaces lors de la correspondance. |
X |
Ceci est utilisé pour la correspondance étendue. |
s |
Cela correspond à une seule ligne. |
i |
Ceci est utilisé pour la correspondance insensible à la casse. |
u |
Pour les caractères Unicode. |
Ancres
Instructions supplémentaires pour le moteur concernant les positions.
Tokens |
Sens |
^ |
Cela dénote le début d'une chaîne |
\A |
Cela indique également le début d'une chaîne |
\Z |
Le jeton pour la fin d'une chaîne. |
\z |
Le jeton pour la fin absolue d'une chaîne. |
\G |
C'est pour le début d'un match. |
Expressions régulières couramment utilisées
Les expressions régulières sont largement utilisées sur Internet. Des validations de formulaire à la recherche de données contenant un ou plusieurs mots clés particuliers, les expressions régulières sont presque indissociables des applications informatiques modernes.
Regardons quelques exemples familiers d'utilisation d'expressions régulières.
Faire correspondre un numéro de téléphone
Voyons quel est le modèle d'un numéro de téléphone utilisé en Inde. Le code de pays vient en premier. Il contient généralement un caractère «+» suivi du nombre 91, qui est le code 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. Ils sont ensuite suivis de 9 autres chiffres.
Donc, une expression régulière valide pour un numéro de téléphone cellulaire indien serait comme donnée.
^(\+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 caractères majuscules et minuscules et de symboles. En outre, il doit y avoir un nombre minimum de caractères - 6 ou 8. Ceci est fait pour que le mot de passe devienne très difficile à déchiffrer.
Tout mot de passe suivant cette règle peut être généré ou validé pour la force du mot de passe à l'aide d'une expression régulière.
^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})
Correspondance d'URL
Les URL sont le moyen le plus courant d'utiliser Internet et de visiter rapidement la page Web souhaitée. Presque tous les sites Web ont une URL. Par conséquent, chaque URL est standardisée 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 regex comme celle donnée ci-dessous.
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
Formats de date et d'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 ou de logiciels ou de systèmes. Les dates doivent toujours être utilisées dans un format qui le rend utilisable par l'utilisateur ou l'application qui tente de les lire.
Une date au format jj-MM-aaaa peut être validée en utilisant une expression régulière qui peut être comme indiqué ci-dessous.
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
Maintenant, explorons certains des outils RegEx en ligne ce qui peut être pratique à construire et à dépanner.
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 regex.
En utilisant cela, nous pouvons tester RegEx pour les langues ci-dessous.
- PCRE (PHP)
- ECMAScript (JavaScript)
- Python
- GoLang
Il prend en charge les fonctionnalités RegEx comme une correspondance, une substitution et des tests unitaires. En dehors de celui-ci, on peut enregistrer l'ancien RegEx testé.
FreeFormatter

Formateur libre est basé sur JavaScript et utilise le Bibliothèque XRegExp pour des fonctionnalités améliorées. Il facilite le test d'un RegEx contre un match ainsi que le remplacement d'un match. Il prend en charge les indicateurs ci-dessous, qui peuvent être utilisés en fonction des besoins lors du test d'un RegEx
- i - Insensible à la casse
- m - Multiligne
- g - Global (ne vous arrêtez pas au premier match)
- s - Le point correspond à tous les sauts de ligne INCLUANTS (XRegExp uniquement).
Regex Crossword

Si Regex et énigmes vous intéressent, c'est le website aller à. Il propose une série de puzzles amusants et interactifs. Ils vous aideront certainement à en savoir plus sur les expressions régulières.
- Optimisé pour les téléphones et résoudre les énigmes RegEx en déplacement.
- Un tutoriel étape par étape, vous apprenant les différents symboles et modèles RegEx.
- Pliez votre esprit autour d'énigmes cubistes 2D palindrome RegEx.
- Large gamme de puzzles RegEx avec des difficultés du débutant à l'expert.
RegExr

RegExr est un site Web pour se salir les mains avec Regex. Vous pouvez écrire des regex, faire correspondre des modèles et vous amuser avec cet équivalent Codepen pour les 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.
- Validez les modèles avec des suites de tests.
- Enregistrez et partagez des expressions avec d'autres.
- 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. Python est un moyen rapide de tester vos expressions régulières Python. Il est livré avec quatre drapeaux à savoir
- Ignorer la casse
- Multiligne
- PointTous
- Verbeux
Rubular

Rubulaire est un éditeur d'expressions régulières basé sur Ruby. Il prend en charge et utilise le Ruby 2.5.7 version ultérieure.
Debuggex

Il est basé sur JavaScript et prend en charge RegEx pour Python et les expressions régulières compatibles Perl (PCRE). Utiliser ceci outil en ligne nous pouvons intégrer notre RegEx à StackOverflow. Il permet de partager le résultat RegEx en créant un lien unique pour chaque test RegEx.
ExtendsClass

Étend la classe est une boîte à outils pour les développeurs. Il fournit un support de test RegEx pour les langues ci-dessous.
- JavaScript
- Python (3.4)
- Ruby (2.1)
- Java (JDK 14)
- PHP (7)
RegEx Tester

Cette testeur d'expression régulière gratuit 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. En utilisant cela, nous pouvons enregistrer l'ancien RegEx testé pour référence future. De plus, il prend en charge JavaScript et PCRE RegEx.
Web ToolKit

Boîte à outils Web contient un ensemble d'outils utilitaires, le testeur RegEx est l'un d'entre eux. Nous pouvons entrer notre RegEx ici et le tester par rapport à une valeur. Il fournit également une fonction de remplacement, de mise en correspondance et de copie des expressions. En dehors de cela, il fournit une bascule pour effectuer une correspondance globale et sensible à la casse.
Ressources d'apprentissage
Si vous souhaitez apprendre RegEx, voici quelques-uns des meilleurs cours disponibles en ligne.
Coursera
Coursera propose des cours de projet guidés intéressants qui vous donneront une expérience pratique de l'utilisation de RegEx. La plupart de ces cours de projet 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 de texte avec Java et RegEx
- Extraire des données de texte avec Bash et RegEx
Udemy
Udemy propose une Cours RegEx complet pour débutants qui vous apprend les bases en 3.5 heures et un Cours Python RegEx avec projets qui vous donnera une expérience pratique de l'utilisation de RegEx pour la validation des entrées, le traitement des données et la transformation.
Conclusion
Nous avons appris les expressions régulières, quelques exemples courants et quelques-unes des outils de test. Avec cette connaissance, nous pouvons créer nos expressions régulières et les utiliser dans nos applications.