User Tools

Site Tools


general:regex

Expressions Régulières

logo

Présentation

Une expression régulière est une suite de caractères typographiques (motif ou pattern) décrivant un ensemble de chaînes de caractères.
Il existe le type POSIX (obsolète) et le type PCRE (Perl Compatible Regular Expression) utilisé en PHP depuis la version 5.3.0.

Syntaxe

Commentaires
(?#Commentaire) Commentaire inline. Le commentaire se termine à la première parenthèse fermante.
# [to end of line] Commentaire en mode X. Le commentaire commence au caractère # sans séquence d'échappement et se poursuit jusqu'à la fin de la ligne.
MétacaractèresExemples
^ Début de chaînes ^abc abc, abcdefg, abc123, …
$ Fin de chaînes abc$ abc, endsinabc, 123abc, …
. Any character (except \n newline) a.c abc, aac, acc, adc, aec, …
| tout élément séparé par le caractère barre verticale bill|ted ted, bill
{…} Explicit quantifier notation. ab{2}c abbc
[…] Explicit set of characters to match. a[bB]c abc, aBc
(…) Logical grouping of part of an expression. (abc){2} abcabc
* zéro, une ou plusieurs fois à l'élément précédent. ab*c ac, abc, abbc, abbbc, …
+ une ou plusieurs fois à l'élément précédent. ab+c abc, abbc, abbbc, …
? zéro ou une fois à l'élément précédent. ab?c ac, abc
Caractères d'échappementExemples
\a un caractère de cloche, \u0007. \a “\u0007” dans “Error!” + '\u0007'
\b Dans une classe de caractères, un retour arrière, \u0008. [\b]{3,} “\b\b\b\b” dans “\b\b\b\b”
\t une tabulation, \u0009. (\w+)\t “item1\t”, “item2\t” dans “item1\titem2\t”
\r un retour chariot, \u000D. (\r n'est pas équivalent au caractère de saut de ligne, \n.) \r\n(\w+) “\r\nThese” dans “\r\nThese are\ntwo lines.”
\v une tabulation verticale, \u000B. [\v]{2,} “\v\v\v” dans “\v\v\v”
\f un saut de page, \u000C. [\f]{2,} “\f\f\f” dans “\f\f\f”
\n une nouvelle ligne, \u000A. \r\n(\w+) “\r\nThese” dans “\r\nThese are\ntwo lines.”
\e un caractère d'échappement, \u001B. \e “\x001B” dans “\x001B”
\ nnn Utilise la représentation octale pour spécifier un caractère (nnn se compose de deux ou trois chiffres). \w\040\w “a b”, “c d” dans “a bc d”
\x nn Utilise une représentation hexadécimale pour spécifier un caractère (nn se compose de deux chiffres exactement). \w\x20\w “a b”, “c d” dans “a bc d”
\cX ou \cx au caractère de contrôle ASCII spécifié par X ou x, où X ou x représente la lettre du caractère de contrôle. \cC “\x0003” dans “\x0003” (Ctrl-C)
\u nnnn un caractère Unicode en utilisant la représentation hexadécimale (quatre chiffres exactement, représentés par nnnn). \w\u0020\w “a b”, “c d” dans “a bc d”
Classes de caractèresExemples
[character_group] n'importe quel caractère unique dans character_group. Par défaut, la correspondance respecte la casse. [ae] “a” dans “gray” ou “a”, “e” dans “lane”
[^character_group] Négation : n'importe quel caractère unique qui ne se trouve pas dans groupe_caractères. Par défaut, les caractères de groupe_caractères respectent la casse. [^aei] “r”, “g”, “n” dans “reign”
[ premier - last ] Plage de caractères : n'importe quel caractère unique dans la plage comprise entre premier et dernier. [A-Z] “A”, “B” dans “AB123”
. Caractère générique : tout caractère à l'exception de \n. Pour faire correspondre un caractère littéral « point » (. ou \u002E), vous devez le faire précéder du caractère d'échappement (\.). a.e “ave” dans “nave” ou “ate” dans “water”
\p{nom} n'importe quel caractère unique de la catégorie générale Unicode ou du bloc nommé spécifié par name. \p{Lu} ou \p{IsCyrillic} “C”, “L” dans “City Lights” ou “Д”, “Ж” dans “ДЖem”
\P{nom} n'importe quel caractère unique qui ne se trouve pas dans la catégorie générale Unicode ou le bloc nommé spécifié par name. \P{Lu} ou \P{IsCyrillic} “i”, “t”, “y” dans “City” ou “e”, “m” dans “ДЖem”
\w n'importe quel caractère alphabétique. \w “I”, “D”, “A”, “1”, “3” dans “ID A1.3”
\W tout caractère autre qu'un caractère de mot. \W “ ”, “.” dans “ID A1.3”
\s tout caractère espace blanc. \w\s “D ” dans “ID A1.3”
\S tout caractère autre qu'un espace blanc. \s\S “ _” dans “int __ctr”
\d n'importe quel chiffre décimal. \d “4” dans “4 = IV”
\D n'importe quel caractère autre qu'un chiffre décimal. \D “ ”, “=”, “ ”, “I”, “V” dans “4 = IV”
Options des expressions régulières
g Global match
m Multiple lines
i insensible à la casse
x les caractères d'espacement sont ignorés, sauf lorsqu'ils sont échappés
X Allow comments and whitespace in pattern
s Treat string as single line
e Evaluate replac­ement
U Ungreedy pattern

PHP

En PHP, plusieurs fonctions sont disponibles telles que :

preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int
preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) : int
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

Ressources

Memo à consulter : Regular Expressions Cheat Sheet
Librairie d'expressions Regex : regular expressions 101 - Library
Librairie d'expressions Regex : RegExLib
Site pour tester les expressions Regex : regular expressions 101

Tutoriels Vidéos

general/regex.txt · Last modified: 2020/08/18 16:14 (external edit)