☰ PHPRegexp
 

Les expressions régulières en PHP

Le caractère d'échappement

 : Caractère d'échappement: marque le caractère suivant comme caractère
    spécial ou littéral.
    Par exemple, "n" correspond au caractère "n". "n" correspond à un
    caractère de nouvelle ligne.
    La séquence "\" correspond à "", tandis que "(" correspond à "(".

Les quantificateurs

* : Dans la recherche, répète zéro ou plusieurs fois le caractère ou
    l'expression qui précède.
    Ainsi, "zo*" correspond à "z" ou à "zoo".

+ : Dans la recherche, répète une ou plusieurs fois le caractère ou
    l'expression qui précède.
    Ainsi, "zo+" correspond à "zoo", mais pas à "z".

? : Dans la recherche, répète zéro ou une fois le caractère ou
    l'expression qui précède.
    Par exemple, "a?ve?" correspond à "ve" dans "lever".

{n} : n est un nombre entier non négatif. Dans la recherche, répète
      exactement zéro ou une fois le caractère ou l'expression qui précède.
      Par exemple, "o{2}" ne correspond pas à "o" dans "Bob," mais aux deux
      premiers "o" dans "fooooot".

{n,} : n est un entier non négatif.
       Dans la recherche, répète au moins n fois le caractère ou l'expression
       qui précède.
       Par exemple, "o{2,}" ne correspond pas à "o" dans "Bob", mais à tous les
       "o" dans "fooooot".
       "o{1,}" équivaut à "o+" et "o{0,}" équivaut à "o*".

{n,m} : m et n sont des entiers non négatifs.
        Dans la recherche, répète zéro au moins n et à au plus m fois le
        caractère ou l'expression qui précède.
        Par exemple, "o{1,3}" correspond aux trois premiers "o" dans "foooooot"
        et "o{0,1}" équivaut à "o?".

Quantificateurs gourmands

* , + , ? , {n} , {min,} , {min,max}

Quantificateurs paresseux

*? , +? , ?? , {n}? , {min,}? , {min,max}?

Les abréviations de caractères

t : Tabulation. 
v : Tabulation verticale. 
f : Saut de page. 
n : Nouvelle ligne. 
r : Retour chariot. 
e : Caractère d'échappement.
num : Détermine s'il s'agit  d'une valeur d'échappement octale ou d'une 
       référence arrière.
Caractère spécifié en octal (0-7) et à condition qu'il n'y ait pas de référence arrière correspondante.
Exemple: 012 xnn : Carartère spécifié en hexadécimal, 2 chiffres. Exemple: 2E.

Les classes de caractères

. : Correspond à tout caractère unique, sauf le caractère de nouvelle ligne. 
[xyz] : Liste de caractères autorisés. Correspond à l'un des caractères 
        indiqués. Par exemple, "[abc]" correspond à "a" dans "plat". 
[^xyz] : Liste de caractères interdits. Correspond à tout caractère non
         indiqué. Par exemple, "[^abc]" correspond à "p" dans "plat". 
[a-z] : Intervalle de caractères autorisés. Correspond à tout caractère 
        dans l'intervalle spécifié.
Par exemple, "[a-z]" correspond à tout caractère alphabétique minuscule compris entre "a" et "z". Pour représenter le caractère - lui-même, le mettre premier ou dernier. [^m-z] : Intervalle de caractères interdits. Correspond à tout caractère ne se trouvant pas dans l'intervalle spécifié. Par exemple, "[^m-z]" correspond à tout caractère ne se trouvant pas entre "m" et "z".

Les abréviations des classes de caractères

d : Correspond à un caractère représentant un chiffre. Équivaut à [0-9].
D : Correspond à un caractère ne représentant pas un chiffre. Équivaut 
     à [^0-9]. 
s : Correspond à tout espace blanc, y compris l'espace, la tabulation, le
     saut de page, etc. Équivaut à "[ fnrtv]". 
S : Correspond à tout caractère d'espace non blanc. Équivaut à "[^ fnrtv]". 
w : Correspond à tout caractère représentant un mot et incluant un trait de 
     soulignement. Équivaut à "[A-Za-z0-9_]". 
W : Correspond à tout caractère ne représentant pas un mot. Équivaut 
     à "[^A-Za-z0-9_]". 

Les correspondances mémorisées.

num : Correspond à num, où num est un entier positif.
Fait référence aux correspondances mémorisées entre parenthèses si num est précédé d'au moins num captures.
Par exemple, "(.)1" correspond à deux caractères identiques consécutifs.

L'alternative

x|y : Correspond soit à x soit à y.
Par exemple, "z|foot" correspond à "z" ou à "foot". "(z|f)oot" correspond à "zoot" ou à "foot".

Les groupements

Les ancrages

^ : Correspond au début de la chaîne.
$ : Correspond à la fin de la chaîne.
(modèle) : Correspond au modèle et mémorise la correspondance.
           La sous-chaîne correspondante peut être extraite de la collection
           obtenue, à l'aide d'Item [0]...[n].
           Pour trouver des correspondances avec des caractères entre
           parenthèses ( ), utilisez "(" ou ")".
b : Correspond à une limite représentant un mot, autrement dit, à la
     position entre un mot et un espace.
     Par exemple, "erb" correspond à "er" dans "lever", mais pas à "er"
     dans "verbe".
B : Correspond à une limite ne représentant pas un mot.
     "en*tB" correspond à "ent" dans "bien entendu".

Les modificateurs

i : insensibilité à la casse. Pas de différence entre majuscules / minuscules.
s : simple ligne. Le point reconnaîtra n'importe quel caractère, y compris
    les nouvelles lignes n.
m : multi ligne. Avec ce moddicateur, ^et $ correspondront aux caractères
    suivant et précédent immédiatement un caractère de nouvelle ligne, en 
    plus du début et de la fin de la chaîne.
e : evalue. Avec cette option,  preg_replace() effectue la substitution
    normale des références arrières dans la chaîne de remplacement, puis
    l'évalue comme un code PHP, et utilise le résultat pour remplacer la
    chaîne de recherche.

Voir http://www.manuelphp.com/php/reference.pcre.pattern.modifiers.php.

Vérifier si une phrase contient certains mots et pas d'autres

On utilisera pour cela les test avant positifs (?=modèle) et les tests avant négatifs (?!modèle).

Ainsi, le modèle ^(?=.location)(?=.chambre)(?!.bruxelles).$ permet de tester la présence de location et chambre mais pas bruxelles.

Le modèle ^(?=.(location|louer))(?=.(chambre|studio))(?!.(paris|bruxelles)).$ permet de tester la présence de location ou louer ainsi que chambre ou studio mais pas paris ni bruxelles.