Ответы:
Убедитесь, что в диалоговом окне «Найти и заменить» выбрано «Использовать: Регулярные выражения»:
Обратите внимание, что для Visual Studio 2010 это не работает в расширении «Быстрый поиск» Visual Power Productivity Power Tools (по состоянию на обновление июля 2011 года); вместо этого вам нужно использовать полный диалог «Найти и заменить» (используйте Ctrl + Shift + H или «Правка» -> «Найти и заменить -> Заменить в файлах») и измените область действия на «Текущий документ».
\)
когда включены регулярные выражения ...
?
должен быть экранирован в Regex, потому что это означает, что предыдущий элемент является необязательным. Таким образом, правильный текст «Найди, что» ~~\?
с вопросительным знаком, экранированным обратной косой чертой. Ответ, который вы дали, работает с образцом текста, потому что он жадно найдет вторую тильду и поглотит ее, однако, если в тексте также есть где-то одна тильда, она также будет неправильно заменена новой строкой.
Если вы установите флаг «Использовать регулярные выражения», тогда \ n будет переведен. Но имейте в виду, что вам нужно изменить поисковый запрос, чтобы быть удобным для регулярных выражений. В вашем случае это должно быть экранировано, как это "\ ~ \ ~ \?" (без кавычек).
Если вы хотите избежать проблем с экранированием специальных символов в строке поиска и замены при использовании регулярных выражений, выполните следующие действия:
Обратите внимание, что даже если вы хотите вручную подбирать совпадения для первого поиска и замены, вы можете безопасно использовать «заменить все» для трех последних шагов.
Например, если вы хотите заменить это:
public IFoo SomeField { get { return this.SomeField; } }
с этим:
public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }
Вы бы сделали следующие замены:
public IFoo SomeField { get { return this.SomeField; } }
→ XOXOXOXO
(регулярное выражение выключено ).XOXOXOXO
→ XOXOXOXO\nHUHUHUHU
(регулярное выражение на ).XOXOXOXO
→ public IFoo Foo { get { return this.MyFoo; } }
(регулярное выражение выключено ).HUHUHUHU
→ public IFoo Bar { get { return this.MyBar; } }
(регулярное выражение выключено ).Вы можете использовать многострочный поиск и замену в макросе Visual Studio, который обеспечивает приятный графический интерфейс для этой задачи.