2009-02-26 5 views
3

Je suis à la recherche d'un outil décent qui peut effectuer une recherche et un remplacement sur plusieurs fichiers, avec une syntaxe d'expression régulière à laquelle je suis habitué en C#. Normalement, je le ferais dans Visual Studio, sauf qu'il a la syntaxe regex la plus étrange (et ceci est censé être plus rapide que de simplement remplacer le texte dans les fichiers manuellement). Jusqu'à présent, j'ai essayé Windows grep mais il n'a pas aimé l'expression rationnelle ci-dessous. La regex en question estRechercher et remplacer dans les fichiers - syntaxe d'expression régulière .NET conviviale

<see cref="(?<class>.+)">(.+)</see> 

Pour remplacer par

<see cref="${class}"/> 

alternative à la transformation de cette syntaxe Visual Studio serait bien!

Jeff a un whole post sur ce blog.

Répondre

3

Dans Visual Studio, trouver:

\<see cref="{:i}"\>.*\</see\> 

et les remplacer par:

<see cref="\1"/> 

{} est l'opérateur de regroupement VS. Ce n'est pas nommé. Dans les remplacements \ n est utilisé pour la valeur du nième groupe dans l'expression de recherche.

Vous pouvez modifier les :i et .* parties si vous avez besoin pour tenir compte des nouvelles lignes ou d'autres espaces.

1

notepad ++ est très populaire et léger et a cette fonctionnalité, avez-vous essayé ?:

http://notepad-plus.sourceforge.net/uk/site.htm

EDIT: Il semblerait mon lien est obsolète et cet usage est seulement assez récente:

http://www.opensourcereleasefeed.com/release/show/notepad-v5-2-released-replace-in-files-feature-added

+0

Est-ce que cela fonctionne sur plusieurs fichiers? – AnthonyWJones

+0

Dans mon édition, il semblerait que oui. Votre commentaire m'a incité à vérifier. –

+0

@AnthonyWJones: Je ne l'ai pas utilisé depuis les versions plus anciennes, mais il est très utile –

3

Dans Visual studio, vous pouvez le faire avec le Reg Ex suivant:

\<see cref="{.+}"\>.+\</see\> 

Remplacer:

<see cref="\1" /> 

Souvenez-vous de sélectionner Utiliser/Expressions régulières dans la boîte de dialogue Rechercher et remplacer.

J'ai longtemps pensé qu'il craint que Visual Studio ne supporte pas la même syntaxe d'expression régulière que le framework .Net.

+0

Cela fonctionne aussi bien que la réponse, mais je ne pouvais pas donner deux réponses –

+0

Pas de soucis. J'ai donné +1 à cette réponse, car elle répondait à mon problème spécifique. – awe

3

Il y a quelques choix:

  • Si c'est quelque chose que vous faites régulièrement, j'irions avec PowerGrep comme il est probablement l'outil le plus complet et convivial pour cela.

  • Son frère, RegexBuddy a également une fonctionnalité Grep, mais pas aussi complète.Si vous n'avez pas peur de Perl, vous pouvez également utiliser sa ligne de commande search and replace tool.

  • Sinon, il existe toujours le vénérable sedworks on Windows.

+0

Depuis que l'affiche a demandé la compatibilité C#, RegexBuddy a la possibilité d'émuler la syntaxe C# (saveur .NET). La saveur regex de PowerGREP est un sur-ensemble de la saveur .NET. –