PHP - PCRE : Aide-mémoire

1 message   •   Page 1 sur 1
Mammouth du PHP | 19672 Messages

11 janv. 2006, 13:01

Une nouvelle qui avait été publiée il y a un certain temps sur dans les news de NEXEN m'a inspiré une idée.

Le fichier original (PDF) est en anglais, Ripat nous en offre fort aimablement une traduction.

Néanmoins, comme c'est d'utilité publique, je mets ici cet aide-mémoire en version française :

Fonctions PHP Classes de caractères de base
  • \w Tout caractère "de mot" [a-z0-9_] plus les accentués
  • \W Tout autre caractère qu'un caractère "de mot"
  • \s Blanc (espace, tab, CRLF)
  • \S Tout caractère non blanc
  • \d Chiffres (0-9)
  • \D Tout caractère sauf chiffres
  • . (point) Tout caractère sauf retour ligne/nouvelle ligne
Caractères Meta
  • ^ Ancrage de début de chaîne (ou ligne en mode multiligne - option m)
  • $ Ancrage de fin de chaîne (ou ligne en mode multiligne - option m)
  • [ Ouverture d'une classe de caractères
  • ] Fermeture d'une classe de caractères
  • | Alternatives (a|b|c) -> caractère a ou b ou c
  • ( Ouverture d'un groupement logique ou de capture
  • ) Fermeture d'un groupement logique ou de capture
  • \ Caractère d'échappement
Quantificateurs
  • * Aucun ou plus
  • + Un ou plus
  • n? Zero ou une occurrence de n
  • {n} n caractères exactement
  • {n,} n caratères ou plus
  • {,m} m caratères ou moins
  • {n,m} entre n and m occurrences (n et m compris)
Options des masques
  • i insensible à la casse
  • m mode multiligne - ^ et $ marquent le début et fin de ligne pour une chaîne multiligne
  • s le point . prendra aussi les retours ligne
  • x permet les commentaires dans un motif
  • e évaluation de code dans un preg_replace()
  • S Optimisation d'un masque par le moteur regex
  • U quantificateurs du masque non gourmand
  • u masque UTF-8
Assertions simples
  • \b limite de mots
  • \B tout caractère sauf limite de mots
  • \A début de la chaîne sujet (indépendant du mode multi-lignes)
  • \Z fin de la chaîne sujet ou nouvelle ligne à la fin de la chaîne sujet (indépendant du mode multi-lignes)
  • \z fin de la chaîne sujet (indépendant du mode multi-lignes)
Assertions et autres options de sous-masques
  • (?:) transforme des parenthèses normales en parenthèses non capturantes
  • (?=) assertion avant positive (positive lookahead) foo(?=bar) trouve foo si suivi par bar
  • (?!) assertion avant négative (negative lookahead) foo(?!bar) trouve foo si pas suivi par bar
  • (?<=) assertion arrière positive (positive lookbehind) (?<=foo)bar trouve bar si précédé par foo
  • (?<!) assertion arrière négative (negative lookbehind) (?<!foo)bar trouve bar si pas précédé par foo
  • (?>) Sous-masque unique (?>\d+)bar relativement plus performant en cas d'échec
  • (?(x)) Sous-masque conditionnel (x référence arrière ou condition)
  • (?#) parenthèses de commentaires (?# ici votre commentaire)
Un lien avec des exemples d'utilisation des masques PCRE : http://lumadis.be/regex/tuto_pcre.php
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

1 message   •   Page 1 sur 1