LazowskiAnton · Extensions

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

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

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.

La carte au survol : l’en-tête avec le type et les options, le modèle avec ses groupes en couleur, une ligne par élément imbriquée sous les groupes, les exemples et le bouton Tester le modèle

Où elle fonctionne

Dans les fichiers C#, au survol du modèle de :

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’écranSignification
RegexSmith · Expression régulière .NET · IgnoreCaseLe type de modèle et les options lues dans l’appel, et l’état à droite.
Le modèleLes 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 chiffresUne 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 groupeLe 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’écranSignification
✓ sûr.NET accepte le modèle, et rien en lui ne peut provoquer de retour arrière (backtracking) catastrophique.
⚠ peut bloquerUne 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 valideLe 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

Ce qui est souligné (RX001)

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.

CorrectionCe 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 RegexSmithOuvre 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.

Le Testeur RegexSmith : le lien vers la source, le modèle, la ligne d’état, les puces d’options, les exemples avec attentes et groupes mis en évidence, une ligne erronée en rouge, le tableau des groupes et les boutons

L’ouvrir

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’écranSignification
✓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.

OptionPar défaut
Expliquer les modèles au survolactivé
Souligner les groupes de captureactivé
RX001 Retour arrière catastrophiqueactivé
Demander une note sur le Marketplaceactivé

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.

La page d’options de RegexSmith
La page d’options.

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

1.0.0