Guide du débutant à l'expression régulière (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 la validation, par exemple pour valider les numéros de carte de crédit, pour la recherche, par exemple via des correspondances de texte complexes, et pour remplacer le texte correspondant par une autre chaîne. Il a également une excellente prise en charge multilingue - apprenez-le une fois et vous pouvez l'utiliser dans de nombreux langages de programmation.
J'ai vu peu de gens jeter un premier regard sur regex, et l'ignorer complètement. Je ne les blâme pas; La syntaxe de regex est complexe et fera beaucoup grincer des dents comme ces langages de ligne de commande, mais pire encore. Mais chaque nouvelle chose est effrayante et semble impossible à apprendre au début. Donc, en empruntant les mots d'Horace, je dirai ceci; Commencez, soyez audacieux et aventurez-vous à ê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 en 1968 par Ken Thompson dans l'éditeur de texte QED pour la recherche de texte. Maintenant, cela fait partie de nombreux langages de programmation comme 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, les classes, les quantificateurs, les modificateurs et les méthodes utilisées dans regex. Voici un lien vers la page Expression régulière de Mozilla Developer Network où vous pouvez voir une table contenant tous ceux-là. Vous pouvez également vous référer à la feuille de cheats à la fin de ce post avec les caractères les plus utilisés.
Voyons un exemple simple avec une explication. C'est une regex.
C'est ce que l'expression régulière ci-dessus va rechercher dans une ligne, un caractère 'B' suivi d'au moins un des caractères entre (y compris) 'a' à 'z', 'A' à 'Z' et les nombres de 0 à 9.Voici un exemple de correspondances dans une ligne en surbrillance:
Panier , ampoule, B12 vitamine, BaSO4 , N avant JC compagnie
L'expression régulière ci-dessus arrêtera la recherche à Panier et renvoie une réponse positive. C'est parce que le modificateur global ' g
' doit être spécifié si vous voulez que l'expression régulière examine toutes les correspondances possibles.
Voyons maintenant comment utiliser cette expression dans JavaScript. La méthode de test
va: si trouvé, une correspondance renvoie true
, sinon false
.
var input = "votre chaîne de test", regex = / B [a-zA-Z \ d] + /; if (! regex.test (input)) alerte ('Aucune correspondance trouvée'); else alert ('Une correspondance est trouvée');
Essayons une autre méthode: match
renvoie 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 toutes les correspondances * / ary = input.match (regex); if (ary === null) alert ('Aucune correspondance trouvée'); else alert ('les correspondances sont:' + ary.toString ());
Que diriez-vous de replace
chaîne? Essayons ça avec regex maintenant.
var input = "votre chaîne de test", regex = / B [a-zA-Z \ d] + / g; alert (input.replace (regex, "#"));
Voici un codepen pour vous de modifier. Cliquez sur l'onglet "JavaScript" pour voir le code JS.
Des exercices
Pour les exercices, vous pouvez google "exercices regex" et essayez de les résoudre. Voici à quoi s'attendre lorsque vous tentez ces exercices, selon les niveaux de difficulté.
De base
Pour moi, être capable de valider un mot de passe est suffisant pour les débutants. Donc, validez un mot de passe de 8 à 16 caractères alphanumériques 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 regex supplémentaires comme lookahead, assertions lookbehind et groupes correspondants ;
- Validez les codes PIN, les hexadécimales, les dates, l'adresse e-mail, le virgule flottante.
- Remplacer le zéro de fin, 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 - l'expression rationnelle la plus optimale pour l'email a des milliers de caractères dedans - alors prenez-la aussi loin que vous vous sentez à l'aise et c'est suffisant . Vous pouvez aussi essayer:
- Analyser du HTML ou du XML (bien que dans le monde réel, il soit déconseillé de le faire car l'utilisation d'expressions régulières pour analyser un langage non-régulier comme le HTML ne le rendra jamais infaillible.) L'analyse XML est une tâche difficile.
- Remplacer des balises
- Suppression des commentaires (sauf les commentaires conditionnels IE)
Outils
Les outils pour visualiser regex sont l'une des choses les plus cool pour moi. Si jamais vous rencontrez une longue expression rationnelle complexe, copiez-la simplement dans l'un de ces outils et vous pourrez voir 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 cheatsheets avec des fonctionnalités de partage.
- Debuggex - Il dessine un diagramme regex selon votre entrée et vous pouvez faire un partage rapide à StackOverflow à partir de là.
- RegExr - Vous pouvez tester votre regex avec celui-ci. Il a également obtenu une référence, un cheatsheet et des exemples pour vous aider.
- Refiddle - À l'heure actuelle, en dehors de JavaScript, vous pouvez également manipuler les versions de regex de Ruby et .NET.
Regex Cheatsheet
Jeton | Définition |
[abc] | Tout caractère unique a, b ou c |
[^ abc] | Tout caractère autre que a, b ou c |
[az] | Caractère entre (y compris) a à z |
[^ az] | Caractère sauf de a à z |
[AZ] | Caractère entre (inclus) A à Z |
. | Un seul caractère |
\ s | Tout caractère d'espace |
\ S | Tout caractère non-espace |
\ré | Tout chiffre de 0 à 9 |
\RÉ | Tout non-chiffre |
\ w | Tout caractère de mot (lettre, nombre et trait de soulignement) |
\ W | Tout caractère non-mot |
(...) | Capture tout ce qui est inclus |
(a | b) | Associez soit a ou b |
une? | Le caractère a est absent ou présent une fois |
une* | Le caractère a est absent ou présent plusieurs fois |
un + | Le caractère a est présent une ou plusieurs fois |
un {3} | 3 occurrences de caractère a consécutivement |
un {3, } | 3 ou plusieurs occurrences de caractère consécutivement |
un {3, 6} | 3 à 6 occurrences de caractère consécutivement |
^ | Début de la chaîne |
$ | Fin de la chaîne |
\ b | Une limite de mot. Si un caractère est le dernier ou le dernier mot d'un mot ou si un caractère est entre un mot ou un caractère non-mot |
\ B | Limite non-mot |
Lisez maintenant: Expressions régulières: 30 outils et ressources utiles
Choisissez votre look Android idéal avec test de goût Android
La plate-forme Android de Google propose une vaste collection d'écrans d'accueil personnalisables, de thèmes, de thèmes, de packs d'icônes et bien plus encore. Malheureusement, trier tout le contenu disponible pour trouver celui qui fonctionne bien pour vous peut être décourageant . Heur
50 gâteaux de Noël créatifs trop frais pour manger
La conception de gâteaux a pris une vie propre avec des gâteaux de mariage créatifs et même des gâteaux sur le thème du geek tournant des têtes dans de nombreuses fonctions importantes. Ce n'est pas différent pour Noël, en fait, dans ce post, nous allons regarder 50 gâteaux de Noël créatifs qui aident à répandre les acclamations de Noël.Certains des g