RegexSmith
Des expressions régulières expliquées et testées là où elles sont écrites. Survolez un modèle en C# pour voir une ligne par élément en mots simples, ses groupes en couleur et des chaînes qui correspondent ; les modèles susceptibles de bloquer sont soulignés ; essayez vos propres exemples dans le Testeur RegexSmith et réécrivez le modèle d’un clic.
Gratuit · Visual Studio 2022 et 2026 · 14 langues d’interface · aucune télémétrie
Pourquoi RegexSmith
![Une carte au survol d’un modèle [GeneratedRegex] : le modèle avec ses groupes en couleur, une ligne par élément en mots simples, des exemples qui correspondent et un qui ne correspond pas, et l’état ✓ sûr](../../regexsmith/marketplace/hero.png)
Des mots simples, pas un cours de syntaxe
^(?<year>\d{4})-(?<id>\d{1,5})$ devient « Début du texte », « Exactement 4 chiffres », « De 1 à 5 chiffres » — une ligne par élément, imbriquée sous son groupe, chaque groupe dans sa propre couleur.
Vérifié par le vrai moteur
Les exemples de la carte et chaque résultat du testeur viennent du moteur d’expressions régulières de .NET lui-même, avec les options de l’appel. Ce que vous voyez, c’est ce que fera votre application.
Des modèles susceptibles de bloquer
([a-z0-9]+\.?)+ a l’air inoffensif et peut figer une requête sur une longue chaîne qui correspond presque. RegexSmith souligne ces répétitions et les corrige avec Ctrl+.
Gratuit, sans contrepartie
Ni abonnement, ni version « pro », ni collecte de données, ni messages dans la fenêtre Sortie ou au démarrage. Les modèles et les exemples restent sur votre ordinateur. La seule chose que nous vous demanderons — quand vous l’aurez utilisée pendant un certain temps — c’est une note sur le Marketplace. Fonctionne sous Visual Studio 2022 et 2026, x64 et ARM64.
Fonctionnalités
- La carte au survol d’un modèle en C# : le modèle avec ses groupes en couleur, une ligne par élément en mots simples, des étiquettes de groupe colorées et un état — ✓ sûr, ⚠ peut bloquer ou ✕ non valide.
- Soulignement des groupes : une fine ligne de la couleur du groupe sous chaque groupe de capture, directement dans le code ; les groupes imbriqués sont placés plus bas.
- Des exemples tirés du modèle — deux chaînes qui correspondent et une qui ne correspond pas — vérifiés par le vrai moteur .NET.
- RX001 : une ligne ondulée sous les répétitions qui peuvent prendre un temps exponentiel, avec des corrections dans Ctrl+. et un aperçu avant/après.
- Le Testeur RegexSmith, ancré à côté de Résultats de la recherche : vos exemples avec des attentes ✓/✗, les correspondances et les groupes mis en évidence, un tableau des groupes et un onglet Remplacer.
- Appliquer au code : le modèle modifié revient dans le même type de littéral de chaîne, avec ses options, en une seule annulation.
- Copier comme test unitaire pour xUnit, NUnit ou MSTest — vos exemples deviennent des cas de test.
La carte au survol
Survolez la chaîne d’un modèle, et l’info-bulle habituelle de Visual Studio reçoit une carte RegexSmith : ce que signifie le modèle, ce qu’il trouve et s’il est sûr.

Où elle fonctionne
Dans les fichiers C#, au survol du modèle de :
new Regex("…"), avec ou sansRegexOptions;- les méthodes statiques
Regex.IsMatch,Match,Matches,Replace,SplitetCount; [GeneratedRegex("…")];[RegularExpression("…")]— la carte indique alors Validation : la valeur entière doit correspondre ;- une
const stringdu même fichier utilisée par l’un d’eux.
Les chaînes normales, textuelles (@"…") et brutes ("""…""") sont lues comme le compilateur les lit, donc "\\d" et @"\d" sont le même modèle.
Ce que montre la carte
| À l’écran | Signification |
|---|---|
| RegexSmith · Expression régulière .NET · IgnoreCase | Le type de modèle et les options lues dans l’appel, et l’état à droite. |
| Le modèle | Les parenthèses de chaque groupe de capture dans sa couleur, son contenu souligné de cette couleur ; le texte garde la couleur du thème et reste donc lisible. |
| Exactement 4 chiffres | Une ligne par élément en mots simples — « Début du texte », « L'un des textes : “jpg”, “png” », « De 1 à 5 chiffres » — imbriquée sous son groupe. Un modèle très long se termine par … N de plus. |
| Étiquettes de groupe | Le nom ou le numéro de chaque groupe sur une étiquette de sa couleur — les mêmes couleurs que dans le modèle et sous le code. |
| ✓ Correspond : … ✗ Ne correspond pas : … | Deux chaînes qui correspondent et une qui ne correspond pas, tirées du modèle et vérifiées par le vrai moteur .NET. Les espaces apparaissent sous forme de points pâles. |
| ▶ Tester le modèle… | Ouvre le modèle dans le Testeur RegexSmith. |
L’état
| À l’écran | Signification |
|---|---|
| ✓ sûr | .NET accepte le modèle, et rien en lui ne peut provoquer de retour arrière (backtracking) catastrophique. |
| ⚠ peut bloquer | Une répétition peut prendre un temps exponentiel sur une longue entrée qui correspond presque ; la carte indique de quel type il s’agit (RX001) et que Ctrl+. propose des corrections. |
| ✕ non valide | Le moteur rejette le modèle ; la carte affiche son message : .NET n'accepte pas ce modèle : … |
« Sûr » signifie seulement ceci : .NET accepte le modèle et il ne peut pas bloquer. Cela ne veut pas dire qu’il trouve ce que vous voulez — c’est à cela que servent les exemples et le testeur.
Soulignement des groupes
Chaque groupe de capture d’un modèle reçoit une fine ligne de sa couleur directement dans le code — la même couleur que dans la carte. Un long modèle à cinq groupes se lit d’un coup d’œil : quelle partie est l’année, laquelle est l’identifiant.
Un groupe imbriqué dans un autre est placé un peu plus bas, pour que les deux lignes restent visibles. Les couleurs se suivent dans l’ordre : saumon, vert, bleu, violet, ambre, turquoise — puis on recommence.
Le soulignement peut être désactivé dans les paramètres : Souligner les groupes de capture.
Modèles susceptibles de bloquer
Certains modèles prennent un temps exponentiel sur une longue chaîne qui correspond presque — la façon classique dont une expression régulière fige une requête web. RegexSmith les repère à leur forme et place une ligne ondulée d’avertissement sous la répétition ; survolez-la pour en connaître la raison.
![Une ligne ondulée RX001 sous ([a-z0-9]+\.?)+ avec le menu Ctrl+. ouvert et un aperçu de la correction : l’ancien modèle barré, le nouveau avec un groupe atomique](../../regexsmith/marketplace/backtracking.png)
Ce qui est souligné (RX001)
- Répétition imbriquée :
(a+)+,([a-z0-9]+\.?)+— une même suite de caractères peut être répartie entre la répétition intérieure et la répétition extérieure d’un très grand nombre de façons. - Répétition d’alternatives qui correspondent aux mêmes caractères :
(\w|\d)+— un chiffre peut être pris par l’une ou l’autre branche, donc chaque chiffre double le travail.
Pas à l’intérieur des groupes atomiques ni des assertions de type lookaround, et jamais avec RegexOptions.NonBacktracking — là, cela ne peut pas arriver.
Corrections dans Ctrl+.
Placez le curseur sur la ligne ondulée et appuyez sur Ctrl+. — chaque correction affiche un aperçu : le modèle avant (barré) et après.
| Correction | Ce qu’elle fait |
|---|---|
| Rendre la répétition intérieure atomique : (?>…) | Entoure la répétition interne de (?>…). Les mêmes chaînes correspondent ; la répétition ne peut plus être découpée de multiples façons. |
| Utiliser RegexOptions.NonBacktracking (.NET 7+) | Ajoute l’option à l’appel. Temps linéaire sur toute entrée ; nécessite .NET 7 ou version ultérieure. Proposée uniquement quand le modèle le permet — pas de références arrière, de lookarounds, de groupes atomiques ou d’équilibrage, ni de conditions. |
| Tester ce modèle dans RegexSmith | Ouvre le modèle dans le testeur — proposée sur n’importe quel modèle, pas seulement sur un modèle risqué. |
RX001 peut être désactivé dans les paramètres (Indications dans l’éditeur) ou avec Ne plus afficher ce type d’indication dans son info-bulle ; les correctifs de Ctrl+. restent.
Le testeur
Le Testeur RegexSmith s’ouvre ancré à côté de Résultats de la recherche. Le modèle vient du code et y reste lié : essayez-le sur vos propres exemples, modifiez-le et réécrivez-le.

L’ouvrir
- ▶ Tester le modèle… dans la carte au survol ;
- Ctrl+. sur un modèle › Tester ce modèle dans RegexSmith ;
- clic droit dans un fichier C# › Tester le modèle d'expression régulière ;
- Affichage › Autres fenêtres › Testeur RegexSmith — non lié au code : un endroit pour essayer un modèle.
Le modèle et ses options
En haut, le fichier et la ligne du modèle — cliquez pour y aller. En dessous, la zone du modèle, la ligne d’état (✓ sûr, ⚠ peut bloquer ou l’erreur du moteur, puis N sur M comme prévu · ms) et les puces d’options : IgnoreCase, Multiline, Singleline, IgnorePatternWhitespace, ExplicitCapture, RightToLeft, CultureInvariant. Chaque modification relance aussitôt l’exécution.
Exemples et attentes
La première fois, les exemples de la carte sont là : deux qui doivent correspondre et un qui ne doit pas. Saisissez-en un nouveau dans Ajoutez un exemple et appuyez sur Entrée… ; cliquez sur un exemple pour le modifier, ✕ le supprime. La marque devant chaque exemple indique ce qu’il doit faire — cliquez dessus pour la changer :
| À l’écran | Signification |
|---|---|
| ✓ | doit correspondre |
| ✗ | ne doit pas correspondre |
| – | aucune attente, simple affichage |
Un exemple qui fait l’inverse passe en rouge — ✗ correspond ou ✗ aucune correspondance — et les exemples deviennent ainsi une petite spécification du modèle. Les correspondances sont teintées, les groupes soulignés dans leurs couleurs, les espaces affichés en points. Une exécution qui dure plus d’1 seconde s’arrête avec ⏱ trop lent.
Groupes de l'exemple sélectionné liste chaque correspondance de l’exemple sélectionné : la correspondance entière, puis chaque groupe avec sa valeur et sa position (non capturé s’il n’a pas participé).
Remplacer
L’onglet Remplacer ajoute une zone de remplacement — $1, ${name}, $$ pour un $ — et affiche le résultat pour chaque exemple, comme le ferait Regex.Replace.
Copier, rétablir, appliquer
Copier comme test unitaire place dans le Presse-papiers un test avec vos exemples, pour xUnit, NUnit ou MSTest — la spécification passe dans le projet de test.
Rétablir revient au modèle et aux options du code ; les exemples restent.
Appliquer au code réécrit le modèle sous le même type de littéral qu’à l’origine (normal, textuel ou brut), avec les options — une seule annulation suffit pour revenir en arrière. Si ce code a changé après l’ouverture du testeur, rien n’est écrit : rouvrez le testeur depuis le modèle.
Les exemples sont mémorisés par modèle et par solution dans %LocalAppData%\RegexSmith\samples, ils sont donc déjà là la fois suivante. Rien ne va dans le dépôt.
Paramètres
Outils › Options › SmithWorks › RegexSmith. Chaque option a une courte description de ce qu’elle fait.
| Option | Par défaut |
|---|---|
| Expliquer les modèles au survol | activé |
| Souligner les groupes de capture | activé |
| RX001 Retour arrière catastrophique | activé |
| Demander une note sur le Marketplace | activé |
En bas : Rétablir les valeurs par défaut, Documentation, Évaluer sur le Marketplace et Envoyer des commentaires.
Les paramètres sont stockés dans %LocalAppData%\RegexSmith.

FAQ
RegexSmith envoie-t-il des données ?
Non. Les modèles sont lus dans le document ouvert et exécutés sur votre ordinateur ; les exemples sont conservés dans %LocalAppData%\RegexSmith. Aucune requête réseau, aucune télémétrie.
La carte indique « ✓ sûr ». Le modèle est-il correct ?
Pas forcément. « Sûr » signifie que .NET accepte le modèle et qu’aucune répétition ne peut y provoquer de retour arrière catastrophique. C’est aux exemples de montrer s’il trouve ce que vous voulez : marquez-les ✓ ou ✗ dans le testeur.
Pourquoi n’y a-t-il pas de carte sur mon modèle ?
La carte apparaît sur un littéral de chaîne dont RegexSmith sait qu’il s’agit d’un modèle : l’argument de new Regex, d’une méthode statique de Regex, de [GeneratedRegex] ou de [RegularExpression], ou une constante du même fichier utilisée à cet endroit. Un modèle construit à l’exécution (concaténé, lu dans des paramètres) ne peut pas être lu. Vérifiez aussi Expliquer les modèles au survol dans les paramètres.
Quel moteur d’expressions régulières est utilisé ?
Le moteur d’expressions régulières de .NET sur lequel tourne Visual Studio lui-même, avec les options de l’appel. RegexOptions.NonBacktracking (.NET 7+) est aussi lu dans l’appel ; les exemples s’exécutent alors sur le moteur habituel, et les mêmes chaînes correspondent dans les deux cas.
Appliquer au code n’a rien fait.
Le code du modèle a changé après l’ouverture du testeur, donc RegexSmith n’écrit pas à un endroit qui ne contient peut-être plus le modèle — le testeur le signale sous les boutons. Rouvrez le testeur depuis le modèle. Là où le code n’a pas de place pour les options ([RegularExpression] n’en accepte aucune), le modèle est écrit et les options ne le sont pas.
Fonctionne-t-il en VB.NET, JavaScript ou TypeScript ?
Pas dans la 1.0 : C# uniquement. Les autres langages utilisent d’autres moteurs ; demandez-le dans le dépôt Feedback si vous en avez besoin.
Où signaler un problème ou proposer une fonctionnalité ?
Ouvrez un ticket dans le dépôt Feedback sur GitHub — il y a des formulaires pour les bogues et les idées (modifiez les noms confidentiels). Vous pouvez aussi utiliser l’onglet Q&A sur le Marketplace.
Historique des versions
1.0.1
- Les indications dans l’éditeur ont leur propre liste dans la page d’options, et un lien dans l’info-bulle désactive un type d’indication là où vous le voyez.
1.0.0
- Première version : la carte au survol avec un détail en mots simples, des groupes en couleur, des exemples vérifiés par le moteur .NET et un état ; le soulignement des groupes dans le code ; RX001 pour les modèles susceptibles de bloquer, avec des corrections par groupe atomique et NonBacktracking dans Ctrl+. ; le Testeur RegexSmith avec attentes, groupes, Remplacer, Copier comme test unitaire et Appliquer au code ; une demande de note unique.