Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Site Web > Lecture du tutoriel

Mémo pour les Regex

Avatar
Auteur : M@teo21
Créé : le 18/08/2005 01:17:53
Modifié : le 03/07/2008 11:13:08
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Cette annexe va être utile à ceux qui ont lu les 2 chapitres sur les Regex :)
Il s'agit d'une sorte de fiche-mémo, un résumé qui vous sera utile lorsque vous serez en train de créer vos propres Regex.

Gardez cette page dans un coin, ou, mieux, imprimez-la. Elle vous servira de support pour vous rappeler toutes les possibilités des Regex.

Cette annexe n'est PAS faite pour apprendre à se servir des Regex. Si vous voulez apprendre, allez voir les chapitres correspondants dans le cours.
Ici, les explications sont succintes car le but est de synthétiser au maximum tout ce qu'il y a à savoir sur les Regex.
Sommaire du chapitre :
Chapitre précédent Sommaire

Structure d'une Regex

Une Regex est entourée de symboles appelés délimiteurs. On peut choisir ce qu'on veut, nous nous utilisons le dièse.
Une Regex a la forme suivante :
#Regex#Options

Pour tester une chaîne à partir d'une Regex, on utilise preg_match :
preg_match("regex","chaine");

Regex Explication
#guitare# Cherche le mot "guitare" dans la chaîne
#guitare|piano# Cherche le mot "guitare" OU "piano"
#^guitare# La chaîne doit commencer par "guitare"
#guitare$# La chaîne doit se terminer par "guitare"
#^guitare$# La chaîne doit contenir uniquement "guitare"

Classes de caractères

Regex Explication
#gr[ioa]s# Chaîne qui contient "gris", ou "gros", ou "gras"
[a-z] Caractère minuscule de a à z
[0-9] Chiffre de 0 à 9
[a-e0-9] Lettre de "a" à "e" ou chiffre de 0 à 9
[0-57A-Za-z.-] Chiffre de 0 à 5, ou 7, ou lettre majuscule, ou lettre minuscule, ou un point, ou un tiret
#[^0-9]# Chaîne ne contenant PAS de chiffre
#^[^0-9]# Chaîne ne commençant PAS par un chiffre

Quantificateurs

Regex Explication
#a?# "a" peut apparaître 0 ou 1 fois
#a+# "a" peut apparaître 1 ou plusieurs fois
#a*# "a" peut apparaître 0, 1 ou plusieurs fois
#bor?is# "bois" ou "boris"
#Ay(ay|oy)*# Fonctionne pour Ay, Ayay, Ayoy, Ayayayoyayayoyayoyoyoy etc...
#a{3}# "a" doit apparaître 3 fois exactement ("aaa")
#a{3,5}# "a" doit apparaître de 3 à 5 fois ("aaa", "aaaa", "aaaaa")
#a{3,}# "a" doit apparaître au moins 3 fois ("aaa", "aaaa", "aaaaa", "aaaaaa" etc...)

Métacaractères

Les métacaractères sont :
# ! ^ $ ( ) [ ] { } ? + * . \

Le point d'exclamation est un métacaractère dans la mesure où on s'en sert de délimiteur.

Pour utiliser un métacaractère dans une recherche, il faut l'échapper avec un antislash : \

Regex Explication
#Hein?# Cherche "Hei" ou "Hein"
#Hein\?# Cherche "Hein?"


Les métacaractères n'ont pas besoin d'être échappés dans une classe, sauf pour "#" (symbole de fin de la regex) et "]" (symbole de la fin de la classe) que l'on doit faire précéder d'un antislash.
Si on veut rechercher un tiret dans une classe de caractères, il faut le mettre au début ou à la fin de la classe :
[a-zA-Z0-9-]

Classes abrégées

Classe abrégée Correspondance
\d [0-9]
\D [^0-9]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\t Tabulation
\n Nouvelle ligne
\r Retour chariot
\s Espace blanc (correspond à \t \n \r)
\S Ce qui n'est PAS un espace blanc (\t \n \r)
. Classe universelle

Le point est la classe universelle : il signifie "n'importe quel caractère".

Capture et remplacement

En utilisant la fonction preg_replace on peut automatiquement faire des remplacement à l'aide de Regex.

Code : PHP
1
2
3
<?php
$texte = preg_replace('#\[b\](.+)\[/b\]#i', '<strong>$1</strong>', $texte);
?>
Ainsi, la Regex suivante...
#(anti)co(?:nsti)(tu(tion)nelle)ment#
... crée les variables suivantes :

Options

Il existe de nombreuses options que l'on peut utiliser avec les Regex PCRE.
Parmi les 3 que nous sommes amenés le plus souvent à utiliser, il y a :

Voilà !
En espérant que ce petit Mémo serve au maximum d'entre vous... Il faut dire qu'il y a tellement de choses à retenir avec les Regex qu'un petit appui comme celui-ci ne peut pas faire de mal ^^
Chapitre précédent Sommaire
Auteur : M@teo21
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 67 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0521s (0.0406s)