regexp
Expression régulières sur OpenClassRooms
Reference
https://www.regular-expressions.info/reference.html
Entrainement
http://regviz.org/
Les symboles les plus courants
Symbole | Signification |
---|---|
? |
ce symbole indique que la lettre est facultative. Elle peut y être 0 ou 1 fois. |
Ainsi,#a?# reconnaît 0 ou 1 « a » |
|
+ |
la lettre est obligatoire. Elle peut apparaître 1 ou plusieurs fois. |
Ainsi,#a+# reconnaît « a », « aa », « aaa », « aaaa », etc. |
|
* |
la lettre est facultative. Elle peut apparaître 0, 1 ou plusieurs fois. |
Ainsi,#a*# reconnaît « a », « aa », « aaa », « aaaa », etc. Mais s’il n’y a pas de « a », ça fonctionne aussi |
Raccourci | Signification |
---|---|
d |
Indique un chiffre. Ça revient exactement à taper [0-9] |
\D |
Indique ce qui n’est PAS un chiffre.Ça revient à taper [^0-9] |
\w |
Indique un caractère alphanumérique ou un tiret de soulignement. Cela correspond à [a-zA-Z0-9_] |
\W |
Indique ce qui n’est PAS un mot. Si vous avez suivi, ça revient à taper [^a-zA-Z0-9_] |
\t |
Indique une tabulation |
\n |
Indique une nouvelle ligne |
\r |
Indique un retour chariot |
\s |
Indique un espace blanc |
\S |
Indique ce qui n’est PAS un espace blanc (\t \n \r) |
. |
Indique n’importe quel caractère. Il autorise donc tout ! |
Exemples
Supprimer les crochets autour de n’importe quelle chaine de caractères
Dans la recherche d’Atom. Chercher les chaines entre crochets
(\[(.*?)\])
Supprimer les crochets autour
$2
Dans la première, chaque parenthèse correpond à une variable. La première est entre le pemier niveau de parenthèses : (\[\])
correspond à $1
. Ensuite, à l’intérieur, on cherche une chaine de caractère (.*?)
, qui correspond à $2
. Pour supprimer les crochets autour, il faut donc remplacer notre regexp complète par $2
seulement ― la regexp initiale sans les crochets $1
.
Trouver un mot
(\w+)
Entourer une entité HTML par des accents graves
Base :
Rechercher : (\&[\w+;#]+)
Remplacer : `$1`
Résultat : `
`
Regviz.org
est très intéressant pour visualiser cela.
Vérifier que l’on a bien un numéro de téléphone français
Ainsi, le numéro de téléphone doit ressembler à ça : « 0153789999 ». Comment écrire une regex qui corresponde à un numéro de téléphone comme celui-ci ?
Voici comment je procède, dans l’ordre, pour construire cette regex.
- Primo, on veut qu’il y ait UNIQUEMENT le numéro de téléphone. On va donc commencer par mettre les symboles
^
et$
pour indiquer un début et une fin de chaîne :#^$#
- Continuons. On sait que le premier caractère est forcément un 0. On tape donc :
#^0$#
- Le 0 est suivi d’un nombre allant de 1 à 6, sans oublier le 8 pour les numéros spéciaux. Il faut donc utiliser la classe
[1-68]
, qui signifie « Un nombre de 1 à 6 OU le 8 » :#^0[1-68]$#
- Ensuite, viennent les 8 chiffres restants, pouvant aller de 0 à 9. Il nous suffit donc d’écrire
[0-9]{8}
pour indiquer que l’on veut 8 chiffres. Au final, ça nous donne cette regex :#^0[1-68][0-9]{8}$#