13 Syntaxe des expressions régulières
L'expression des chaines de caractères dans les requêtes CQL suit la syntaxe des expressions régulières PCRE (Perl-Compatible Regular Expressions). La syntaxe complète est décrite à la section « Specification of the regular expressions supported by PCRE » du manuel de PCRE : http://regexkit.sourceforge.net/Documentation/pcre/pcrepattern.html.
Voici un résumé en français des opérateurs les plus courants.
. |
matche n'importe quel caractère |
\ |
neutralise l'opérateur situé à droite |
| |
alternance |
() |
regroupement |
[…] |
classe de caractères entre crochets (eg « [aeiouy] » pour une voyelle, ou « [a-z] » pour n'importe quelle minuscule) |
[^…] |
ensemble complémentaire de la classe de caractères entre crochets, le caractère ^ joue le rôle de négation (eg « [^aeiouy] » pour un caractère qui n'est pas une voyelle) |
Tableau 4: Méta-caractères (ou Opérateurs)
? |
matche 0 ou 1 fois l'expression située à gauche |
* |
matche 0 fois ou plus |
+ |
matche 1 fois ou plus |
{n} |
matche n fois |
{n,} |
matche au moins n fois |
{n,m} |
matche entre n et m fois |
Tableau 5: Quantifieurs
\x{CC} |
caractère de valeur CC (exprimée en hexadécimal) (eg « \x{E9} »pour « é ») |
\xCC |
caractère de valeur CC (exprimée en hexadécimal) |
Tableau 6: Codes de caractères
\d |
un chiffre |
\D |
pas un chiffre |
\w |
un caractère de « mot » |
\W |
pas un caractère de « mot » |
\s |
un caractère d'espace |
\S |
pas un caractère d'espace |
\p{Classe} |
un caractère de la classe Unicode « Classe » (eg « \p{Lu} » pour un caractère majuscule) |
\P{Classe} |
pas un caractère de la classe Unicode « Classe » |
[[:ClassePOSIX:]] |
un caractère de la classe « ClassePOSIX » (eg « [[:upper:]] » pour un caractère majuscule) |
Tableau 7: Classes de caractères
\p{L} |
lettre |
\p{Ll} |
caractère minuscule |
\p{Lu} |
caractère majuscule |
\p{N} |
caractère numérique |
\p{Xan} |
caractère alphanumérique |
\p{Pd} |
caractère de tiret (eg « - », « — »…) |
\p{P} |
caractère de ponctuation (eg « , », « . »…) |
\p{Ps} |
caractère de ponctuation ouvrante (eg « ( ») |
\p{Pe} |
caractère de ponctuation fermante (eg « ) ») |
\p{Sm} |
caractère de symbole mathématique (eg « ~ ») |
\p{Cyrillic} |
caractère en alphabet russe |
\p{Arabic} |
caractère en alphabet arabe |
\p{Greek} |
caractère en alphabet grec |
Tableau 8: Classes Unicode courantes57
alpha |
caractère alphabétique (usage : ”[[:alpha:]]”) |
alnum |
caractère alphanumérique |
ascii |
caractère du code ASCII |
digit |
chiffre décimal |
graph |
caractère imprimable, sans l'espace |
lower |
caractère minuscule |
|
caractère imprimable, incluant l'espace |
punct |
caractère de ponctuation |
space |
caractère d'espace |
upper |
caractère majuscule |
word |
caractère de mot |
xdigit |
chiffre hexadécimal |
Tableau 9: Classes POSIX courantes (système plus ancien et plus grossier que les classes Unicode)
Références de caractères mémorisés
-
\2 contenu du premier groupe de parenthèses mémorisé (suppose la présence de parenthèses « ..(..).. » auparavant dans l'expression)
-
\3 contenu du deuxième groupe de parenthèses mémorisé
-
…
-
\g{nom} contenu du groupe de parenthèses mémorisé nommé « nom » (suppose la présence de « ..(?<nom>..).. » auparavant dans l'expression)
-
...
Exemples :
-
([[:lower:]])([[:lower:]]).*m.*\3\2 : deux minuscules suivies de « m » suivi des deux premières minuscules en ordre inverse ;
-
(.*)\2 : une même chaine deux fois de suite
-
(?<groupe1>.*)\g{groupe1} : une même chaine deux fois de suite
57 Toutes les classes Unicode sont décrites à la section « Unicode character properties » du manuel de PCRE.