Page d'accueil » Codage » Guide du débutant des expressions régulières (Regex)

    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

    Maintenant, lisez: Expressions régulières: 30 outils et ressources utiles