2009-02-26 3 views
3

Я ищу достойный инструмент, который может выполнять поиск и замену на несколько файлов с помощью синтаксиса регулярных выражений, с которым я использую C#. Обычно я делал это в Visual Studio, за исключением того, что он имеет самый странный синтаксис regex (и это означает, что он быстрее, чем просто заменяет текст в файлах вручную).Найти и заменить в файлах. .NET-синтаксис регулярных выражений

До сих пор я пробовал окна grep, но ниже него не понравилось регулярное выражение. Регулярное выражение в вопросе

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

Чтобы заменить

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

В качестве альтернативы преобразования этого синтаксиса Visual Studio, все будет в порядке!

В этом блоге у Джеффа есть whole post.

ответ

3

В Visual Studio найти:

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

и заменить:

<see cref="\1"/> 

{} это оператор группировки ВС. Он не назван. В замене \ n используется для значения n-й группы в выражении find.

Вы можете настроить :i и .* части, если вам необходимо учитывать для новых линий или других пробелов.

1

Notepad ++ является довольно популярным и легким и имеет эту функцию, вы пробовали что ?:

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

EDIT: Казалось бы моя ссылка устарела и это использование только совсем недавно:

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

+0

Работает ли это над несколькими файлами? – AnthonyWJones

+0

В моем редактировании было бы да. Ваш комментарий заставил меня дважды проверить. –

+0

@ AnthonyWJones: Я не использовал его со старых версий, но очень полезен –

3

В Visual Studio вы можете сделать это с помощью следующей Reg Ex:

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

Заменить:

<see cref="\1" /> 

Не забудьте выбрать Использовать/Регулярные выражения в Находке и заменить диалог.

Я уже давно думал, что Visual Studio не поддерживает такой же синтаксис регулярного выражения, как и .Net framework.

+0

Это работает так же хорошо, как и ответ, но я не мог дать два ответа. –

+0

Не стоит беспокоиться. Я дал этому ответу +1, потому что он ответил на мою конкретную проблему. – awe

3

Есть несколько вариантов:

  • Если это то, что вы делаете регулярно, я бы с PowerGrep, как это, вероятно, наиболее полным и удобным инструментом для этого.

  • Его брат, RegexBuddy также имеет функциональность Grep, хотя и не столь всеобъемлющую.

  • Если вы не боитесь Perl, вы также можете использовать его командную строку как search and replace tool.

  • В противном случае все еще существует почтенный sed, который works on Windows.

+0

Поскольку плакат спросил о совместимости с C#, RegexBuddy имеет возможность эмулировать синтаксис C# (вкус .NET). PowerGREP - это супервыражение вкуса .NET. –