DocumentsImagesMédiasOutils PDF

Explicateur Regex en Ligne

Convertis des schemas regex en langage humain, directement dans le navigateur.

//
1Start of string
2One of: A, -, Z, a, -, z, 0, -, 9, ., _, %, +, -, one or more times
3Literal "@"
4One of: A, -, Z, a, -, z, 0, -, 9, ., -, one or more times
5Escaped character: \.
6One of: A, -, Z, a, -, z, at least 2 times
7End of string
Processed in your browser

Explicateur d'expressions regulieres

Toutes les variantes

Compatible avec les schemas JavaScript, Python, PCRE, Java, Go et Ruby.

100% prive

L'analyse du schema se fait dans ton navigateur. Tes donnees ne quittent jamais ton appareil.

Explication claire

Chaque token du schema explique en langage naturel, avec des exemples de correspondance.

Instantane

Explication en temps reel au fur et a mesure que tu tapes. Sans inscription, sans attente.

Trois étapes, sans complications

1

Colle ton expression reguliere

Tape ou colle le schema regex que tu veux comprendre, avec ou sans delimiteurs.

2

Explication instantanee

L'outil analyse le schema et decrit en francais ce que fait chaque partie : groupes, quantificateurs, classes de caracteres et plus encore.

3

Teste avec du vrai texte

Saisis un texte d'exemple pour voir quelles parties correspondent au schema en temps reel.

Des questions ?

Une expression reguliere est un langage de schemas pour rechercher et manipuler du texte. Elle te permet de decrire precisement un schema : par exemple, un numero de telephone, une adresse email ou une URL. Le moteur regex parcourt le texte en cherchant des chaines qui correspondent a ce schema. Elles sont supportees par pratiquement tous les langages de programmation modernes.

Email : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. URL : https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}. Telephone international : \+?[1-9]\d{1,14}. Chiffres uniquement : ^\d+$. Code postal US : ^\d{5}(-\d{4})?$.

Les regex sont extremement concises : chaque caractere a une signification speciale potentielle. Le point (.) correspond a n'importe quel caractere. L'asterisque (*) signifie zero ou plusieurs fois. Les crochets ([]) definissent des classes de caracteres. Cette densite d'information signifie qu'une expression de 20 caracteres peut representer des regles tres complexes, mais rend aussi la comprehension difficile au premier coup d'oeil sans pratique.

PCRE (Perl Compatible Regular Expressions) est le standard de facto pour PHP, Apache et nginx. JavaScript a son propre moteur avec des differences : les versions anciennes ne supportent pas les lookbehind a longueur variable, et il possede le drapeau /u pour Unicode. Python utilise le module re avec une syntaxe similaire a PCRE mais avec quelques differences (par exemple, \A et \Z pour le debut/fin de chaine). Go utilise RE2, qui ne supporte pas les backreferences pour des raisons de performance. Java utilise java.util.regex avec la syntaxe POSIX etendue.

Les caracteres avec une signification speciale dans les regex sont : . * + ? ^ $ { } [ ] | ( ) \. Pour les utiliser litteralement, echappe-les avec une barre oblique inverse : \. pour un point litteral, \* pour un asterisque litteral. En JavaScript a l'interieur d'une chaine, tu as besoin d'un double echappement : '\\.' car la chaine consomme deja une barre oblique. De nombreux langages proposent des fonctions comme re.escape() en Python ou preg_quote() en PHP.

Histoire des expressions regulieres (Ken Thompson 1968, editeur ed), theorie du langage formel, regex en programmation moderne

Les expressions regulieres trouvent leur origine dans la theorie des langages formels developpee par le mathematicien Stephen Kleene dans les annees 1950, qui a defini les ensembles reguliers et la notation algebrique pour les decrire. Ken Thompson a ete le premier a implementer les regex dans un logiciel quand il les a integrees dans l'editeur de texte Unix ed en 1968 (et plus tard dans grep, dont le nom vient de global regular expression print). Son implementation utilisait une compilation vers le code machine pour une recherche efficace, une technique qui a pose les bases des moteurs de regex modernes.

La popularisation massive des regex est venue avec Perl dans les annees 1980 et 1990. Larry Wall a integre les regex nativement dans la syntaxe du langage, et les PCRE (Perl Compatible Regular Expressions) sont devenues le standard de facto. POSIX a formalise deux niveaux : BRE (Basic Regular Expressions) et ERE (Extended Regular Expressions) dans le standard de 1992. Aujourd'hui, pratiquement tous les langages de programmation incluent le support des regex : Python (module re), JavaScript (RegExp), Java (java.util.regex), Go (regexp/RE2), Ruby, PHP (preg_*), .NET et bien d'autres.

Les regex sont un outil a double tranchant : extremement puissantes mais aussi source de vulnerabilites. Le ReDoS (Regular Expression Denial of Service) est un type d'attaque ou un schema regex mal ecrit peut provoquer un temps d'execution exponentiel avec certaines entrees malveillantes. Le moteur RE2 de Google (utilise dans Go) a ete specifiquement concu pour garantir un temps d'execution lineaire, eliminant la possibilite de ReDoS au detriment du support des backreferences. L'OWASP inclut le ReDoS dans sa liste de risques de securite dans les applications web.