Fonctionnement des expressions rationnelles
PHP Manual

Propriétés des caractères Unicode

Depuis PHP 4.4.0 et 5.1.0, trois nouvelles séquences d'échappement pour trouver des types de caractères sont disponibles lorsque le mode UTF-8 est sélectionné. Elles sont :

\p{xx}
un caractère avec les propriétés xx
\P{xx}
un caractère sans les propriétés xx
\X
une séquence étendue Unicode

Les noms des propriétés représentés par xx ci-dessus sont limités aux catégories de propriétés générales Unicode. Chaque caractère a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères. Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la propriété. Par exemple, \p{^Lu} équivaut à la même chose que \P{Lu}.

Si une seule lettre est spécifiée avec \p ou \P, il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas, en l'absence de négation, les accolades dans la séquence d'échappement sont optionnelles ; ceci revient à la même chose :

    \p{L}
    \pL
   
Codes des propriétés supportées
CAutre
CcContrôle
CfFormat
CnNon affecté
CoUtilisation privée
CsSubstitut
LLettre
LlLettre en minuscule
LmLettre de modification
LoAutres lettres
LtLettre titrée
LuLettre en majuscule
MMarque
McMarque d'espacement
MeMarque d'enfermement
MnMarque non espacée
NNombre
NdNombre décimal
NlNombre Lettre
NoAutres nombres
PPonctuation
PcPonctuation de connecteur
PdTiret de ponctuation
PePonctuation de fermeture
PfPonctuation finale
PiPonctuation initiale
PoAutres ponctuations
PsPonctuation ouvrante
SSymbole
ScSymbole monétaire
SkSymbole de modification
SmSymbole mathématique
SoAutres symboles
ZSéparateur
ZlSéparateur de ligne
ZpSéparateur de paragraphe
ZsSéparateur d'espace

Les propriétés étendues comme "Greek" ou "InMusicalSymbols" ne sont pas supportées par PCRE.

La sensibilité à la casse de la recherche n'affecte pas les séquences d'échappement. Par exemple, \p{Lu} cherche toujours et uniquement les lettres en majuscules

La séquence \X cherche n'importe quel numéro de caractères Unicode qui forme une séquence étendue Unicode. \X est l'équivalent de (?>\PM\pM*).

C'est-à-dire qu'il cherchera un caractère sans la propriété "Marque", suivi par zéro ou plus caractères avec la propriété "Marque", et traitera la séquence en tant que groupe atomique (voir ci-dessous). Les caractères avec la propriété "Marque" sont typiquement des accents qui affectent le caractère précédent.

La recherche de caractères par les propriétés Unicode n'est pas la méthode la plus rapide, car PCRE doit chercher une structure qui contient les données dans plus de quinze mille caractères. C'est pour cela que les séquences traditionnelles comme \d et \w n'utilisent pas les propriétés Unicode dans PCRE.


Fonctionnement des expressions rationnelles
PHP Manual