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.

  1. 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 :#^$#
  2. Continuons. On sait que le premier caractère est forcément un 0. On tape donc : #^0$#
  3. 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]$#
  4. 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}$#