oLoveTools
Moteur regex isolé

Testeur, débogueur et explicateur d'expressions régulières en ligne

Créez, testez et déboguez vos expressions régulières avec un vrai arbre syntaxique, les positions de chaque groupe de capture, des alertes de retour arrière catastrophique et l'export de code vers dix langages, le tout dans votre onglet.

Chaque correspondance avec ses positions et ses groupes
Le motif expliqué en arbre, pas en liste plate
Les motifs emballés sont tués, pas laissés à figer l'onglet
Export vers JavaScript, Python, Go, Rust et six autres
Expression régulière
/
/
ValideAucune correspondanceIsolé
  • Dans [ ] le point est déjà littéral, l'échapper est donc inutile.
Texte de test

Cliquez sur un surlignage pour sélectionner cette correspondance. Maintenez Alt pour voir le texte brut ; F3 et Maj+F3 parcourent les correspondances.

Continuer
Correspondances

Aucune correspondance

Le motif est valide, il n'apparaît simplement pas dans ce texte. Vérifiez les drapeaux : sans g, seule la première correspondance est signalée.

Ce que fait ce motif
  • [\w.%+-]+Répète une fois ou plus — glouton : prend tout ce qu'il peut et ne rend que s'il le faut
    • [\w.%+-]N'importe quel caractère parmi : \w . % + -
  • @Le caractère « @ »
  • [\w.-]+Répète une fois ou plus — glouton : prend tout ce qu'il peut et ne rend que s'il le faut
    • [\w.-]N'importe quel caractère parmi : \w . -
  • \.Le caractère « . », pris au pied de la lettre
  • [A-Za-z]{2,}Répète au moins 2 fois — glouton : prend tout ce qu'il peut et ne rend que s'il le faut
    • [A-Za-z]N'importe quel caractère parmi : A–Z a–z

Comment ça marche

1

Écrivez le motif

Tapez-le, prenez-en un dans la bibliothèque, ou collez un lien qu'on vous a partagé. Le motif est coloré selon ce que chaque morceau est réellement, et les erreurs sont soulignées là où elles se produisent.

2

Réglez les drapeaux et le mode

Activez g, i, m, s, u, v, y et d, puis choisissez si vous cherchez, remplacez ou découpez. Coupez le mode direct si vous préférez que rien ne s'exécute avant d'appuyer sur le bouton.

3

Exécutez sans risque

La recherche a lieu dans un Web Worker avec une limite de deux secondes. Chaque correspondance revient avec ses positions et ses groupes, et le panneau vous prévient avant un motif qui pourrait ne jamais finir.

4

Emportez-le

Copiez la regex, exportez les correspondances en JSON ou CSV, générez le code équivalent pour dix langages, ou envoyez le résultat directement à un autre outil oLoveTools.

Un parseur, pas un tokeniseur

Le motif est analysé en un véritable arbre syntaxique, l'explication montre donc ce qui contient quoi, et ne se trompe pas sur les groupes nommés. Un tokeniseur lit (?<year>\d{4}) comme un groupe de capture suivi d'un quelque chose facultatif ; un parseur y lit le groupe nommé que c'est.

Le moteur tourne là où on peut le tuer

La recherche a lieu dans un Web Worker surveillé par un minuteur. Mesuré ici, (a+)+$ contre 31 caractères prend plus de quatre minutes de CPU pur sur le même moteur que celui de votre navigateur. Dans la page c'est un onglet mort ; dans un worker c'est une exécution terminée au bout de deux secondes.

Des correspondances avec de vraies positions

Le drapeau d est activé en coulisses, chaque groupe de capture porte donc son début et sa fin, pas seulement ce qu'il a attrapé. C'est ce qui permet de peindre les groupes à l'intérieur d'une correspondance surlignée et de sauter de la liste aux caractères exacts.

Il vous prévient avant que ça brûle

Quantificateurs imbriqués sur des caractères qui se recouvrent, quantificateurs autour de quelque chose qui peut ne rien consommer, références arrière vers des groupes inexistants, \p{…} sans le drapeau u, et lookbehind sur un navigateur trop ancien : tout est signalé avant la moindre exécution.

Export vers dix langages

JavaScript, TypeScript, Python, Java, C#, PHP, Go, Rust, Ruby et grep/sed, avec les drapeaux traduits correctement et le remplacement réécrit dans la syntaxe propre à chaque langage. Les extraits Go et Rust le disent quand le motif utilise quelque chose que RE2 ne sait pas faire.

Enchaîné au reste de la suite

Envoyez le texte remplacé, les parties découpées ou les correspondances en JSON directement vers WordFlow, DiffSnap, JSONFlow, CodeCard ou HashBolt, sans passer par votre dossier de téléchargements.

testeur regex

Un testeur de regex qui ne peut pas figer votre navigateur

Les expressions régulières sont la seule chose qu'un testeur doit exécuter avant qu'elles ne soient correctes, et une expression incorrecte peut être pathologique : un motif comme (a+)+$ contre une chaîne qui correspond presque prend un temps exponentiel, et le moteur du navigateur n'a aucun moyen de s'interrompre. RegexFlow exécute chaque recherche dans un Web Worker avec une surveillance de deux secondes. Si l'exécution déborde, le worker est terminé puis remplacé, et vous recevez un message au lieu d'un onglet figé avec votre motif piégé dedans.

Groupes de capture avec noms et positions
Remplacer et découper, pas seulement chercher
Alertes de retour arrière avant l'exécution
Dix langages cibles

Rien ne sort de l'onglet

Le motif, le texte de test, le remplacement et tout fichier que vous ouvrez sont traités entièrement dans votre navigateur : pas d'envoi, pas d'aller-retour serveur. Les fichiers sont lus avec le FileReader du navigateur lui-même. La seule chose qui puisse sortir est un lien de partage, et seulement quand vous appuyez sur le bouton qui le construit.

D'un motif qui marche à du code qui marche

Fait pour le débogage, pas pour la démo

L'analyse de logs qui doit survivre à une ligne malformée, la validation qui doit rejeter autant qu'accepter, un rechercher-remplacer sur tout un dépôt où $1 doit atterrir au bon endroit, et ce moment où vous héritez du motif de quarante caractères de quelqu'un d'autre et devez savoir ce qu'il fait avant d'y toucher. L'arbre d'explication, les positions et le tableau des groupes sont faits pour ce moment-là.

Le moteur est celui contre lequel vous allez livrer

La recherche utilise le RegExp de votre propre navigateur : ce que vous voyez est exactement ce que fera votre JavaScript, y compris les parties qui varient — c'est pourquoi l'outil vérifie la prise en charge du lookbehind et des unicodeSets au lieu de la supposer. Quand vous exportez vers Python, Go ou Rust, les différences sont explicitées au lieu de produire en silence un extrait qui ne compilera pas.

Questions fréquentes

QMon motif ou mon texte de test sont-ils envoyés quelque part ?

Non. Tout s'exécute en JavaScript dans votre onglet, y compris les fichiers que vous ouvrez : ils sont lus avec le FileReader du navigateur et jamais envoyés. Vous pouvez vous déconnecter d'internet, l'outil continue de fonctionner.

QQue se passe-t-il si j'écris un motif qui ne finit jamais ?

Il est tué. La recherche tourne dans un Web Worker surveillé pendant deux secondes ; si le worker ne répond pas à temps, il est terminé et un nouveau prend sa place. Cela compte plus qu'il n'y paraît : mesuré sur le même moteur que celui de votre navigateur, (a+)+$ contre 31 caractères a tourné plus de quatre minutes. Sur le fil principal, c'est un onglet que vous ne récupérez pas.

QQuel moteur d'expressions régulières est utilisé ?

Le RegExp natif de votre navigateur : ce que vous testez est exactement ce que fera votre JavaScript. Là où la prise en charge varie, l'outil vérifie au lieu de supposer : le lookbehind (Safari ne l'a ajouté qu'en 16.4), le drapeau v pour unicodeSets et le drapeau d pour les positions des groupes. S'il en manque un, on vous le dit plutôt que de vous montrer une erreur obscure.

QPourquoi l'explication du motif est-elle un arbre ?

Parce qu'une liste plate ne peut pas dire ce qui est à l'intérieur de quoi, et parce qu'un tokeniseur se trompe là où un parseur ne se trompe pas : (?<year>\d{4}) est un groupe nommé, pas un groupe de capture suivi d'un caractère facultatif. Chaque ligne est liée aux caractères exacts qu'elle décrit, si bien que la survoler les surligne dans le motif.

QLe remplacement gère-t-il $1 et les groupes nommés ?

Oui : de $1 à $99, $<nom>, $& pour la correspondance entière, $` et $' pour le texte autour, et $$ pour un dollar littéral. Chaque jeton que vous tapez est listé en dessous avec ce en quoi il se transformera, et le code généré les réécrit dans la syntaxe propre à chaque cible : \g<nom> pour Python, ${nom} pour Java et C#.

QPuis-je l'utiliser sur un gros fichier ?

Oui, mais au-delà de 40 000 caractères l'outil cesse de réévaluer tout seul et attend que vous appuyiez sur Exécuter : chercher dans un gros fichier à chaque frappe est du travail gaspillé. Vous pouvez aussi couper le mode direct à n'importe quelle taille et rester entièrement en manuel.

QPourquoi le code Go est-il accompagné d'un avertissement ?

Go et Rust utilisent RE2, linéaire par conception et donc dépourvu de lookahead, de lookbehind et de références arrière. Si votre motif en utilise, l'extrait est quand même affiché, mais avec une note disant qu'il ne compilera pas tel quel — ce qui est plus utile qu'un extrait qui échoue en silence.

QQue signifient les couleurs dans le texte de test ?

Chaque correspondance est entourée en fuchsia et la sélectionnée est plus vive. À l'intérieur de celle-ci, les groupes de capture ont leur propre plage violette, vous voyez donc exactement quels caractères ont atterri dans $1. Maintenez Alt pour masquer tous les surlignages et lire le texte tel qu'il est.

Recherches associées

testeur regextester expression régulièredébogueur regexexpliquer une regexconstructeur de regex en ligneremplacer avec regexretour arrière catastrophiqueregex vers pythontesteur regex javascriptgroupes de capture nommés
Fait partie de la suite oLoveTools
oLoveTools

Un établi gratuit, privé et local pour les expressions régulières.

© 2026 oLoveToolsÀ propos

RegexFlow | Testeur et débogueur d'expressions régulières gratuit

Testeur de regex gratuit avec surlignage en direct, positions des groupes de capture, explication en arbre, alertes de retour arrière et export vers Python, Go, Java et plus. 100% dans votre navigateur.

Questions fréquentes

Mon motif ou mon texte de test sont-ils envoyés quelque part ?

Non. Tout s'exécute en JavaScript dans votre onglet, y compris les fichiers que vous ouvrez : ils sont lus avec le FileReader du navigateur et jamais envoyés. Vous pouvez vous déconnecter d'internet, l'outil continue de fonctionner.

Que se passe-t-il si j'écris un motif qui ne finit jamais ?

Il est tué. La recherche tourne dans un Web Worker surveillé pendant deux secondes ; si le worker ne répond pas à temps, il est terminé et un nouveau prend sa place. Cela compte plus qu'il n'y paraît : mesuré sur le même moteur que celui de votre navigateur, (a+)+$ contre 31 caractères a tourné plus de quatre minutes. Sur le fil principal, c'est un onglet que vous ne récupérez pas.

Quel moteur d'expressions régulières est utilisé ?

Le RegExp natif de votre navigateur : ce que vous testez est exactement ce que fera votre JavaScript. Là où la prise en charge varie, l'outil vérifie au lieu de supposer : le lookbehind (Safari ne l'a ajouté qu'en 16.4), le drapeau v pour unicodeSets et le drapeau d pour les positions des groupes. S'il en manque un, on vous le dit plutôt que de vous montrer une erreur obscure.

Pourquoi l'explication du motif est-elle un arbre ?

Parce qu'une liste plate ne peut pas dire ce qui est à l'intérieur de quoi, et parce qu'un tokeniseur se trompe là où un parseur ne se trompe pas : (?<year>\d{4}) est un groupe nommé, pas un groupe de capture suivi d'un caractère facultatif. Chaque ligne est liée aux caractères exacts qu'elle décrit, si bien que la survoler les surligne dans le motif.

Le remplacement gère-t-il $1 et les groupes nommés ?

Oui : de $1 à $99, $<nom>, $& pour la correspondance entière, $` et $' pour le texte autour, et $$ pour un dollar littéral. Chaque jeton que vous tapez est listé en dessous avec ce en quoi il se transformera, et le code généré les réécrit dans la syntaxe propre à chaque cible : \g<nom> pour Python, ${nom} pour Java et C#.

Puis-je l'utiliser sur un gros fichier ?

Oui, mais au-delà de 40 000 caractères l'outil cesse de réévaluer tout seul et attend que vous appuyiez sur Exécuter : chercher dans un gros fichier à chaque frappe est du travail gaspillé. Vous pouvez aussi couper le mode direct à n'importe quelle taille et rester entièrement en manuel.

Pourquoi le code Go est-il accompagné d'un avertissement ?

Go et Rust utilisent RE2, linéaire par conception et donc dépourvu de lookahead, de lookbehind et de références arrière. Si votre motif en utilise, l'extrait est quand même affiché, mais avec une note disant qu'il ne compilera pas tel quel — ce qui est plus utile qu'un extrait qui échoue en silence.

Que signifient les couleurs dans le texte de test ?

Chaque correspondance est entourée en fuchsia et la sélectionnée est plus vive. À l'intérieur de celle-ci, les groupes de capture ont leur propre plage violette, vous voyez donc exactement quels caractères ont atterri dans $1. Maintenez Alt pour masquer tous les surlignages et lire le texte tel qu'il est.

Recherches associées

testeur regex, tester expression régulière, débogueur regex, expliquer une regex, constructeur de regex en ligne, remplacer avec regex, retour arrière catastrophique, regex vers python, testeur regex javascript, groupes de capture nommés