Guide du débutant des expressions régulières (Regex)
Une expression régulière est un ensemble de caractères formant un motif pouvant être recherché dans une chaîne. Regex peut être utilisé pour validation valider les numéros de carte de crédit, par exemple chercher c'est-à-dire via des correspondances de texte complexes, et pour remplacer le texte correspondant avec une autre ficelle. Il prend également en charge plusieurs langues - apprenez-le une fois et utilisez-le dans de nombreux langages de programmation..
J'ai vu peu de gens jeter un premier coup d'œil à regex et l'ignorer complètement. Je ne leur en veux pas; La syntaxe de regex est complexe et rendra beaucoup de choses en désordre, tout comme ces langages en ligne de commande, mais en pire. Mais chaque nouvelle chose est effrayante et semble impossible à apprendre au début. Alors, empruntant les mots de Horatius, je vais dire ceci; Commencez, soyez audacieux et osez être sage.
À propos de Regex
Regex a ses racines dans les neurosciences et les mathématiques et n’a été mis en œuvre dans la programmation qu’en 1968 par Ken Thompson dans l’éditeur de texte QED pour la recherche de texte. Maintenant, il fait partie de nombreux langages de programmation tels que Perl, Java, Python, Ruby et JavaScript..
Regardons quelques exemples sur le fonctionnement de regex.
Je vais utiliser JavaScript dans mes exemples. Maintenant, pour passer le niveau débutant, vous devez apprendre tous les caractères, classes, quantificateurs, modificateurs et méthodes utilisé dans regex. Voici un lien vers la page Expression régulière de Mozilla Developer Network où vous pouvez afficher un tableau contenant toutes celles-ci. Vous pouvez également vous référer à la feuille de triche à la fin de cet article avec les caractères les plus utilisés.
Voyons un exemple simple avec une explication. C'est une regex.
C’est ce que la regex ci-dessus va rechercher dans une ligne, un caractère 'B' suivi d’au moins un caractère quelconque compris entre (et incluant) 'a' à 'z', 'A' à 'Z' et les nombres de 0 à 9.
Voici un exemple de correspondance dans une ligne surlignée:
Panier, ampoule, B12 vitamine, BaSO4, N avant JC entreprise
La regex ci-dessus arrêtera la recherche à Panier et retourner une réponse positive. C'est parce que le modificateur global 'g
'doit être spécifié si vous voulez que la regex examine toutes les correspondances possibles.
Voyons maintenant comment utiliser cette expression en JavaScript. le tester
la méthode va: si trouvé un match match vrai
, autre faux
.
var input = "votre chaîne de test", regex = / B [a-zA-Z \ d] + /; if (! regex.test (entrée)) alert ('Aucune correspondance n'est trouvée'); else alert ('Une correspondance est trouvée');
Essayons une autre méthode: rencontre
retourne les correspondances trouvées dans un tableau.
var input = "votre chaîne de test", regex = / B [a-zA-Z \ d] + / g, / * J'ai ajouté le modificateur global 'g' à la regex pour obtenir tous les résultats * / ary = input.match (regex); if (ary === null) alert ('Aucune correspondance n'est trouvée'); else alert ('les correspondances sont:' + ary.toString ());
Que diriez vous de la ficelle remplacer
? Essayons cela avec regex maintenant.
var input = "votre chaîne de test", regex = / B [a-zA-Z \ d] + / g; alert (input.replace (regex, "#"));
Vous trouverez ci-dessous un codepen que vous pouvez modifier. Cliquez sur l'onglet "JavaScript" pour afficher le code JS..
Des exercices
Pour les exercices, vous pouvez google “exercices de regex” et essayez de les résoudre. Voici à quoi s'attendre lors de ces exercices, en fonction du niveau de difficulté.
De base
Pour moi pouvoir valider un mot de passe est suffisant pour commencer. Donc, validez un mot de passe pour une longueur de 8 à 16 caractères, alphanumérique avec votre choix de caractères spéciaux autorisés.
Intermédiaire
C’est là que vous devriez vous entraîner avec plus de données du monde réel et apprendre quelques points de regex comme regarder devant, regarder derrière les affirmations et groupes correspondants;
- Valider les codes PIN, hexadécimaux, dates, identifiant de messagerie, virgule flottante.
- Remplacer le zéro final, les espaces, un ensemble de mots correspondants
- Extraire différentes parties d'une URL
Avancée
Vous pouvez optimiser les solutions des exercices ci-dessus - la regex la plus optimale pour le courrier électronique contient des milliers de caractères - prendre aussi loin que vous vous sentez à l'aise et c'est assez. Vous pouvez aussi essayer:
- Analyser HTML ou XML (il est toutefois déconseillé de le faire dans le monde réel, car utiliser une expression régulière pour analyser un langage inhabituel comme le HTML ne le rendra jamais infaillible. De plus, l'analyse syntaxique XML est une tâche difficile, plus adaptée aux utilisateurs de niveau avancé)
- Remplacement des tags
- Supprimer des commentaires (sauf les commentaires conditionnels d'IE)
Outils
Outils pour visualiser regex sont une des choses les plus cool pour moi. Si vous rencontrez un regex long et complexe, il vous suffit de le copier-coller dans l'un de ces outils pour visualiser clairement le flux. En plus de cela, il existe de nombreux outils que vous pouvez utiliser pour jouer avec le code regex. Ils présentent également des exemples et des aide-mémoire ainsi que des fonctionnalités de partage..
- Debuggex - Il dessine un diagramme regex selon votre entrée et vous pouvez faire un partage rapide sur StackOverflow directement à partir de là..
- RegExr - Vous pouvez tester votre regex avec celui-ci. Il contient également une référence, une feuille de triche et des exemples pour vous aider..
- Refiddle - Pour le moment, à part JavaScript, vous pouvez également jouer avec les versions Ruby et .NET de regex..
Regex Cheatsheet
Jeton | Définition |
[abc] | Un seul caractère a, b ou c |
[^ abc] | Tout caractère autre que a, b ou c |
[a-z] | Caractère compris entre a et z |
[^ a-z] | Caractère sauf de a à z |
[A à Z] | Caractère compris entre A à Z |
. | N'importe quel caractère |
\ s | Tout caractère blanc |
\ S | Tout caractère non-blanc |
\ré | N'importe quel chiffre de 0 à 9 |
\RÉ | N'importe quel chiffre |
\ w | N'importe quel mot (lettre, chiffre et trait de soulignement) |
\ W | Tout caractère autre qu'un mot |
(…) | Capturez tout ce qui est inclus |
(a | b) | Match a ou b |
une? | Le personnage a est absent ou présent une fois |
une* | Le personnage a est absent ou présent plusieurs fois |
une+ | Le personnage a est présent une ou plusieurs fois |
un 3 | 3 occurrences de caractère l'une après l'autre |
un 3, | 3 occurrences ou plus de caractère l'une après l'autre |
un 3,6 | 3 à 6 occurrences de caractère l'une après l'autre |
^ | Début de chaîne |
$ | Fin de chaîne |
\ b | Une limite de mot. Si un caractère est le dernier ou le premier mot d'un mot ou si un caractère est compris entre un mot ou un caractère autre qu'un mot |
\ B | Limite non mot |