Petit guide sur les expressions régulières 9


Sommaire

Madeline
Sur twitter

Peut-être avez-vous entendu parler de regex sans savoir ce que ça signifiait ni comment ça se prononçait et encore moins à quoi ça servait.

Peut-être connaissez-vous déjà le mot regex, sa signification (regular expression, soit expression régulière ou encore expression rationnelle) mais vous ne savez pas les utiliser.

Et bien voici un petit guide qui je l’espère répondra à ces questions.

Qu’est-ce qu’une expression régulière ?

En quelques mots, les regex servent à schématiser des chaines de caractères.

Prenons un exemple précis : vous êtes dans Google Analytics et souhaitez avoir les statistiques sur un certain type de page, par exemple des rubriques.

Vous savez que les URL des rubriques correspondent à : /rubrique-pageN.html et les produits à /rubrique/produit-ID.html . Et bien grâce aux expressions régulières, dans les filtres de google analytics (ou les segments, on peut les utiliser à plusieurs endroits), vous pourrez en sélectionnant « correspondant à l’expression régulière » voir toutes les pages qui correspondent à ces schémas.

Où utiliser des regex ?

Les expressions régulières, c’est quand même bien pratique. Surtout si vous utilisez Google Analytics. Ou bien Screaming Frog. Ou encore SEO tools for Excel. Ou bien Google Spreadsheet. Ou bien un pour faire des règles de redirections. Bref, les regex, c’est bien utile quand on fait du webmarketing, du seo, du dev, etc.

Allez, entrons dans le vif du sujet.

Comment écrire une expression régulière ?


(voir la présentation)

le point d’interrogation ?

? : le point d’interrogation permet de dire qu’un caractère est optionnel.

Exemple : Matt?hieu (le 2e T est optionnel)
Ce qui rend possible : Matthieu, Mathieu

les parenthèses ()

() : permet de mieux limiter un groupe, un ensemble de caractère. C’est la même utilisation qu’en maths.

le pipe |

| : signifie OU (cela donne le choix parmi plusieurs possibilités)

Exemple : Matthieu|Mathieu
Ce qui donne : Matthieu ou Mathieu

l’antislash \

\ permet de forcer un caractère, de dire qu’il ne s’agit pas d’un opérateur mais bien d’un caractère.

Par exemple : Mathieu ou Matthieu\?
Si je ne mets pas le point d’interrogation, mon expression serait interprétée comme ceci : Mathieu ou Matthie, Mathieu ou Matthieu

le point .

. : le point permet de remplacer un caractère (chiffre, lettre, caractère spécial, etc.)

le plus +

+ : le plus indique qu’un caractère est répété au moins 1 fois

Exemple : Mat+hieu
Ce qui donne : Mathieu, Matthieu, Matttttttttttttttttttttttttttttttttttthieu (mais pas Mahieu)

l’étoile *

* : l’étoile indique qu’un caractère est peut-être répété.

Exemple : Mat*hieu
Ce qui peut donner : Mahieu, Mathieu, Matthieu, Mattttttttttttttttttttttttttthieu

(.*) permet de dire que n’importe quel caractère est répété. Bref, qu’il y a une chaine de caractères, qu’il y a un truc, ou pas.

les crochets []

[] indique un caractère parmi une liste.
[0-3] = un chiffre entre 0 et 3
on pourrait également l’écrire (0|1|2|3) mais c’est plus long.

[mdp] = soit m, soit d, soit p
[a-z] = une lettre en minuscule entre a et z
[A-Z] = une lettre en majuscule
[a-zA-Z] = une lettre en minuscule ou une lettre en majuscule, bref une lettre
[a-zA-Z0-9] = une lettre en minuscule ou une lettre en majuscule ou un chiffre, bref une lettre ou un chiffre

les accolades{}

{} permet de dire combien de fois est répété.
{3} = est répété 3 fois
{2,5} : est répété au moins 2 fois et au plus 5 fois (bref est répété entre 2 et 5 fois).

Pour rappel, l’étoile indique qu’il n’y a pas de limite dans la répétition, on peut également écrire * = {0,}
Le + = {1,}
? = {0,1}

l’accent circonflexe ^

^indique le début d’une chaine de caractère
Exemple : ^http (ca commence par http, il n’y a rien avant http)

[^] exclut une liste.
Par exemple [^mdp], ça ne contient ni m, ni d, ni p.

le dollar $

$ indique la fin d’une chaine de caractère
Exemple \.html$ (ca se termine par .html, il n’y a rien derrière le .html)

Voilà, ce n’est pas plus compliqué que ça…il y a d’autres petites astuces mais rien qu’avec ça, on peut faire beaucoup.


Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

9 commentaires sur “Petit guide sur les expressions régulières

  • David DGT

    Bonjour,
    J’aime beaucoup la présentation et la clarté de votre article/tutoriel. Très beau travail !
    J’ai tout de même une interrogation :
    Est-ce possible d’illustrer l’article avec un exemple concret d’utilisation des Regex en SEO ?

    J’ai commencé à travaillé en SEO dans mon entreprise, mais je n’arrive toujours pas à comprendre quand utiliser les Regex et surtout, quelles données je dois récupérer ?

    Merci beaucoup pour votre implication.

    Bien cordialement,

    • David DGT

      Re bonjour,

      Je me suis rendu compte que j’oubliais une autre question à laquelle je ne trouve pas de réponse.
      D’après l’exemple suivant :
      Je souhaite chercher une date dans un document qui contiendrait :
      04/09/2019
      25/11/2018
      13/04/2017
      J’écrirais donc #^([0-9]{2}\/){2}[0-9]{4}$#
      Cependant une date ne peut pas être par exemple :
      00/13/9999
      Mon problème est donc : Comment exclure une suite de caractères ? Pour le « 00 » si j’écris #[^00][^32]+#
      Je n’exclus pas « 00 » mais « 0 ou 0 » ce qui ne m’avance pas.
      Ainsi, comment puis-je exclure cette suite de 2 chiffres ?

      Merci beaucoup et dsl pour la lecture 🙁

      • Madeline Auteur de l’article

        il est possible d’écrire une regex un peu plus restrictive :
        (([0-2][0-9])|(3[01]))\/([01][0-2])\/([12][0-9]{3})
        Ce n’est pas exact non plus car cela autorise le 00 en jour.
        Pour le mois, c’est ok.
        Et pour l’année, elle ne doit commencer que par 1 ou 2.

  • Maurice

    Merci pour cette article très didactique. Bon, je crois qu’il va falloir que je pratique encore un peu, en tout cas cet article m’a au moins permis de mettre en place une réécriture d’url sur l’ensemble des articles d’un blog ou j’ai changé le format date/categories/post en /post

    RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ https//NDD.TLD/$4

    Elle est pas belle ma réécriture ? Merci encore pour le tuto !!