203 votes

Quelle saveur de Regex Visual Studio Code utilise-t-il ?

En essayant de chercher-remplacer dans Visual Studio Code, je découvre que sa saveur Regex est différente de celle de Visual Studio. Plus précisément, j'essaie de déclarer un groupe nommé avec string (?<p>[\w]+) qui fonctionne dans Visual Studio mais pas dans Visual Studio Code. Il se plaindra avec l'erreur Invalid group .

En dehors de la résolution de ce problème spécifique, je cherche des informations sur la saveur des Regexes dans Visual Studio Code et où trouver de la documentation à ce sujet, afin de pouvoir m'aider pour toute autre question sur laquelle je pourrais tomber.

Visual Studio utilise les expressions régulières .NET comme indiqué dans la documentation. aquí . Ce lien est mentionné comme étant la documentation de VS Code ailleurs sur Stackoverflow, mais ce n'est pas le cas.

228voto

Shaun Luttin Points 1585

Rust Regex dans la barre latérale Rechercher/Remplacer dans les fichiers

Rob Lourens de MSFT a écrit que la recherche de fichiers utilise Rust regex. Le site Documentation du langage Rust décrit la syntaxe.

Rob Lourens on GitHub

JavaScript Regex dans le widget Rechercher/Remplacer dans un fichier

Alexandru Dima de MSFT a écrit que le widget de recherche utilise JavaScript regex. Comme Wicktor l'a commenté, La documentation d'ECMAScript 5 décrit la syntaxe. Il en va de même pour le Guide MDN des expressions régulières en JavaScript .

Alexandru Dima on GitHub

Testez la différence

La barre latérale de recherche de fichiers ne prend pas en charge (?=foobar) alors que le widget "find in file" supporte cette syntaxe "lookahead".

Shows a lookahead working in the widget but not in the sidebar.

Concernant la recherche/remplacement avec des groupes

Pour rechercher/remplacer des groupes, utilisez les parenthèses. () pour regrouper et $1 , $2 , $3 , $n à remplacer.

Voici un exemple.

Avant :

This is the text before the replace.

Après :

This is the text after the replace.

23voto

protoEvangelion Points 461

Réponse de Shaun est toujours correcte, cependant pour ajouter une mise à jour, récemment ajouté VS Code la possibilité d'opter pour l'utilisation du Moteur PCRE2 basé sur Perl . Vous pouvez activer cette fonction dans la configuration de vos paramètres.

Cela vous permet d'effectuer des opérations de regex plus avancées telles que aperçus et renvois . Mais comme noté ci-dessous, la regex doit toujours être regex JavaScript valide .

VS Code prend toutefois en charge les recherches par expression régulière, les références arrière et le lookaround ne sont pas supportés par défaut. Mais vous pouvez les activer avec le paramètre recherche.utiliserPCRE2 . Ceci configure ripgrep pour utiliser le moteur regex de PCRE2. Bien que PCRE2 supporte de nombreuses autres fonctionnalités, nous ne supportons que les expressions regex qui sont encore valable dans JavaScript car les éditeurs ouverts sont toujours recherchés à l'aide de l'outil de recherche de l'éditeur. de l'éditeur.

Et pour un bonus si vous avez atterri ici en essayant de faire des recherches multi-lignes, VS Code a récemment ajouté cette fonctionnalité !

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X