Les Regex

ce n'est pas si compliqué




Mode d'emploi de la présentation : 

Utilisez les flèches gauche/droite
 pour naviguer d'un sujet à l'autre
Utilisez les flèchesh bas/haut 
pour détailler un sujet, voir des exemples,...


http://www.canyouseome.com


Regex ?

REG => REGular
EX = EXpression
REGEX = expression régulière


"décrit un ensemble de chaines de caractères selon une syntaxe précise"
http://fr.wikipedia.org/wiki/Regex



Utilisation des RegEx

Si vous êtes développeur, 
j'espère que vous en voyez l'utilité (réécriture d'URL, etc.).

Si vous n'êtes pas développeur ou webmaster, 
les expressions régulières peuvent quand même vous servir.

Les regex peuvent être utilisées dans Google Analytics, Google Spreadsheet, Excel (grâce à un plugin comme SEO for Excel), etc.



Les crochets [ ]


Désigne un élément parmi une liste


[abcd] = a ou b ou c ou d
[a-z] = une lettre en minuscule, entre a et z
[A-Z] = une lettre en majuscule, entre A et Z
[0-9] = un chiffre entre 0 et 9
[123] = 1 ou 2 ou 3


[A-Za-z0-9] =  une lettre en minuscule ou majuscule ou un chiffre
= un caractère alphanumérique                   


Exemples [ ]


[a-c] correspond à a, b ou c

[a-cA-D] correspond à une lettre minuscule entre a et c ou une lettre majuscule entre A et D

Les réponses possibles sont : a, b, c, A, B, C, D



Les accolades { }


Indique combien de fois est répété un élément

{3} = est répété exactement 3 fois

{3,} = est répété au moins 3 fois

{3,5} = est répété entre 3 et 5 fois


Exemples { }


[ab]{1} correspond à a ou b


[ab]{1,2} correspond à abaaabbabb


[ab]{2,} correspond à a ou b répété au moins 2 fois

soit : aa, aaa, aaaaaa, aaaaaaaaaa, bb, bbbbbbbbb



Les parenthèses ()

Elles ont la même utilité (ou inutilité) qu'en mathématiques.
Elles désignent un groupe.

(http://)(www)(canyouseome)(com)

Google drive

Google spreadsheet permet l'utilisation d'expressions régulières grâce aux fonctions regexmatch, regexextract, regexreplace

RegexExtract permet d'extraire certains fragments d'un texte à partir d'une expression régulière.
Elle extrait les fragments de l'expression régulière entre parenthèses.

Vous avez par exemple une cellule A1 qui contient "nom prénom".
On peut schématiser le contenu de cette cellule par 2 chaines de caractères séparées par un espace, ce qui peut se traduire par :
.* .*

Si on souhaite avoir le prénom, on utilisera =regexExtract(A1;".* (.*)")
Si c'est le nom, =regexExtract(A1;"(.*) .*")
Si on veut les 2, dans 2 colonnes différentes =regexExtract(A1;"(.*) (.*)")


L'accent circonflexe ^ (caret)

indique le début d'une chaîne de caractères


^http = commence par http


Caret entre crochet [^]

Mais entre crochet, il exclut des caractères 


[^a] = un caractère qui n'est pas a
peut correspondre à b, c, d, 1, 2, 3, Z, K, etc.

Exemple 

^[^a] = commence par un caractère qui n'est pas a


Attention 

Dans [^(http)] , les parenthèses ne changent pas l'interprétation de l'expression régulière.
[^(http)]  = ne correspond pas à h t ou p.




le dollar $

indique la fin d'une chaîne de caractère

au revoir$ = termine par au revoir



Le point .

indique un caractère unique, quel qu'il soit

c.t peut correspondre à cat, cbt, c3t, c!t, ...

Il y a un caractère présent entre un c et t.






Le plus +

+ indique qu'un caractère est répété une fois ou plus 
(au moins 1 fois)

Si on prend l'écriture avec les accolades, cela équivaut à:
 {1,}

chu+t = chu{1,}t = chut ou chuuuuuuuuuuuuuut 




Le point d'interrogation ?


Il indique qu'un caractère est optionnel, il est présent 0 ou 1 fois
(au plus 1 fois)

Avec les accolades, il équivaut à {0,1}

Matt?hieu = Matt{0,1}hieu = Matthieu ou Mathieu



Astuce


Lorsqu'on utilise les parenthèses, tout le groupe encadré devient optionnel.

I (don't)? love SEO =
I love SEO
I don't love SEO



L'astérisque *


Il indique qu'un caractère est peut-être présent, 
un nombre indéterminé de fois.

En accolade, cela équivaut à {0,}

Chu*t = cht = chut = chuuuuuuuuuut

Le point + l'astérisque: .*

Cette combinaison permet d'englober beaucoup de cas :
on indique qu'un caractère unique est répété un nombre infini de fois, ou pas.

Globalement, ca encadre tout.



Le pipe |

Cet opérateur correspond à ou

a|b = a ou b
a|b|c|d = a ou b ou c ou d = [abcd] = [a-d]



Le backslash \

Il est utilisé de plusieurs façons.
Il permet d'annuler l'opérateur et de prendre en compte le signe de ponctuation.


Exemple : www\.canyouseome\.com
Le point n'est pas l'opérateur qui désigne un caractère unique, mais bel et bien un point.





\w \d et \s

Ils désignent des groupes de caractères 
\d = un chiffre (un caractère numérique) = [0-9]
\w = un caractère alphanumérique = [a-zA-Z0-9_]
\s = un espace, retour à la ligne, etc.



Memotechnique


d = digit 
w = word  
s = space



\D \W et \S

Mettre des majuscules permet de désigner l'inverse du groupe désigné en minuscule

\D = un caractère qui n'est pas un chiffre = [^0-9]
\W = un caractère qui n'est pas alphanumérique
\S = un caractère qui n'est pas un espace


En savoir plus sur les RegEx


Pour vous faire la main, je vous conseille des mots croisés :
http://regexcrossword.com/

Un ebook qui m'a permis de débuter :
Regex for Google Analytics (anglais)

De quoi tester en ligne les expressions régulières  :
http://rubular.com/