# Correspondance de paterne Parle

Parle supporte la correspondance de paterne avec des expressions régulières similaires à flex. Les ensembles de caractères POSIX suivants sont également supportés : `[:alnum:]`, `[:alpha:]`, `[:blank:]`, `[:cntrl:]`, `[:digit:]`, `[:graph:]`, `[:lower:]`, `[:print:]`, `[:punct:]`, `[:space:]`, `[:upper:]`, `[:xdigit:]`.

Les classes de caractères Unicode ne sont actuellement pas activées par défaut, passez --enable-parle-utf32 pour les rendre disponibles. Un encodage particulier peut être mappé avec une regex correctement construite. Par exemple, pour correspondre au symbole EURO encodé en UTF-8, l'expression régulière `[\xe2][\x82][\xac]` peut être utilisée. Le paterne pour une chaîne encodée en UTF-8 pourrait être `[ -\x7f]{+}[\x80-\xbf]{+}[\xc2-\xdf]{+}[\xe0-\xef]{+}[\xf0-\xff]+`.

## Représentation des caractères

Représentation des caractères
Séquence | Description
--- | ---
\a | Alerte (cloche).
\b | Retour arrière (Backspace).
\e | Caractère ESC, \x1b.
\n | Nouvelle ligne.
\r | Retour chariot.
\f | Saut de page, \x0c.
\t | Tabulation horizontale, \x09.
\v | Tabulation verticale, \x0b.
\oct | Caractère spécifié par un code octal à trois chiffres.
\xhex | Caractère spécifié par un code hexadécimal.
\cchar | Caractère de contrôle nommé.

## Classes de caractères

Classes de caractères
Sequence | Description
--- | ---
[...] | Un seul caractère listé ou contenu dans une plage listée. Les plages peuvent être combinées avec les opérateurs `{+}` et `{-}`. Par exemple `[a-z]{+}[0-9]` est la même chose que `[0-9a-z]` et `[a-z]{-}[aeiou]` est la même chose que `[b-df-hj-np-tv-z]`.
[^...] | Un seul caractère non listé et non contenu dans une plage listée.
. | N'importe quel caractère, par défaut `[^\n].`
\d | Caractère numérique, `[0-9]`.
\D | Caractère non numérique, `[^0-9]`.
\s | Caractère d'espace blanc, `[ \t\n\r\f\v]`.
\S | Caractère non d'espace blanc, `[^ \t\n\r\f\v]`.
\w | Caractère de mot, `[a-zA-Z0-9_]`.
\W | Caractère de non mot, `[^a-zA-Z0-9_]`.

## Classes de caractères Unicode

Classes de caractères Unicode
Sequence | Description
--- | ---
\p{C} | Autre.
\p{Cc} | Autre, contrôle.
\p{Cf} | Autre, format.
\p{Co} | Autre, utilisation privée.
\p{Cs} | Autre, substitut.
\p{L} | Lettre.
\p{LC} | Lettre, casée.
\p{Ll} | Lettre, minuscule.
\p{Lm} | Lettre, modifiée.
\p{Lo} | Lettre, autre.
\p{Lt} | Lettre, de titre.
\p{Lu} | Lettre, majuscule.
\p{M} | Marque.
\p{Mc} | Marque, espace combiné.
\p{Me} | Marque, encadrant.
\p{Mn} | Marque, non espacé.
\p{N} | Nombre.
\p{Nd} | Nombre, chiffre décimal.
\p{Nl} | Nombre, lettre.
\p{No} | Nombre, autre.
\p{P} | Ponctuation.
\p{Pc} | Ponctuation, connecteur.
\p{Pd} | Ponctuation, tiret.
\p{Pe} | Ponctuation, fermeture.
\p{Pf} | Ponctuation, guillemet final.
\p{Pi} | Ponctuation, guillemet initial.
\p{Po} | Ponctuation, autre.
\p{Ps} | Ponctuation, ouverture.
\p{S} | Symbole.
\p{Sc} | Symbole, devise.
\p{Sk} | Symbole, modifié.
\p{Sm} | Symbole, math.
\p{So} | Symbole, autre.
\p{Z} | Séparateur.
\p{Zl} | Séparateur, ligne.
\p{Zp} | Séparateur, paragraphe.
\p{Zs} | Séparateur, espace.

Ces classe de caractères ne sont disponibles que si l'option --enable-parle-utf32 a été passée lors de la compilation.

## Alternance et répétition

Alternance et répétition
Sequence | Greedy | Description
--- | --- | ---
...|... | - | Essayer les sous-paterne en alternance.
* | yes | Correspond 0 ou plusieurs fois.
+ | yes | Correspond 1 ou plusieurs fois.
? | yes | Correspond 0 ou 1 fois.
{n} | no | Correspond exactement n fois.
{n,} | no | Correspond au moins n fois.
{n,m} | yes | Correspond au moins n fois mais pas plus de m fois.
*? | no | Correspond 0 ou plusieurs fois.
+? | no | Correspond 1 ou plusieurs fois.
?? | no | Correspond 0 ou 1 fois.
{n,}? | no | Correspond au moins n fois.
{n,m}? | no | Correspond au moins n fois mais pas plus de m fois.
{MACRO} | - | Inclut la regex MACRO dans la regex courante.

## Ancre

Ancre
Sequence | Description
--- | ---
^ | Commence par une chaîne ou après un retour à la ligne.
$ | Finit par une chaîne ou avant un retour à la ligne.

## Regroupement

Regroupement
Sequence | Description
--- | ---
(...) | Regroupe une expression régulière pour modifier l'ordre d'évaluation.
(?r-s:pattern) | Applique l'option r et omet l'option s lors de l'interprétation du paterne. Les options peuvent être zéro ou plusieurs des caractères i, s ou x. `i` signifie insensible à la casse. `-i` signifie sensible à la casse. `s` modifie le sens de `.` pour correspondre à n'importe quel caractère. `-s` modifie le sens de `.` pour correspondre à n'importe quel caractère sauf `\n`. `x` ignore les commentaires et les espaces dans les paterne. Les espaces sont ignorés sauf s'ils sont échappés par un backslash, contenus dans des `""s`, ou apparaissent à l'intérieur d'une plage de caractères. Ces options peuvent être appliquées globalement au niveau des règles en passant une combinaison des indicateurs de bits à l'analyseur lexical.
(?# comment ) | Omet tout ce qui est dans (). Le premier caractère ) rencontré termine le paterne. Il n'est pas possible pour le commentaire de contenir un caractère ). Le commentaire peut s'étendre sur plusieurs lignes.