Поиск кода Visual Studio и замена регулярными выражениями


116

Я хочу использовать «Поиск и замену» в Visual Studio Code, чтобы изменить каждый экземпляр <h1>content</h1>на#### content пределах документа с использованием регулярных выражений.

Как я могу этого добиться?


2
Должен ли быть регулярный поиск и замена? Не могли бы вы просто заменить <h4>на, #### а затем заменить </h4>на ''?
Бретт Ист

Ответы:


191

Итак, ваша цель - поиск и замена?
Согласно PDF-файлу с клавишами официальной Visual Studio, вы можете нажать Ctrl + Hв Windows и Linux или ⌥⌘Fна Mac, чтобы включить инструмент поиска и замены:

Вкладка поиска и замены кода Visual Studio Если вы хотите отключить код, вам просто нужно ввести <h1>поиск и заменить на#### .

Но если вы хотите использовать это регулярное выражение вместо этого, вы можете включить его в значке: . *и использовать регулярное выражение: <h1>(.+?)<\/h1>и заменить его на:#### $1 .

И, как предложил @tpartee , вот еще немного информации о движке Visual Studio, если вы хотите узнать больше:


3
Visual Studio будет обрабатывать регулярное выражение, как и любое другое приложение, с той лишь разницей, что это так называемые разновидности регулярных выражений, которые являются «компилятором» регулярного выражения и как он будет обрабатывать выражение. Обычно он игнорируется в подобных ответах, потому что большинство из них довольно похожи, но для тех, кто все еще хочет проверить это, я добавил его в ответ
Матеус

2
Вопрос касается кода Visual Studio, а этот ответ - Visual Studio.
Dustin Wyatt

1
или измените свои сочетания клавиш. Пример: В IDEA Keybindings ( marketplace.visualstudio.com/… ) вы можете использовать: Ctrl + Shift + R для замены в пути или для поиска в пути: Ctrl + Shift + F
SL5net

6

Для новичков я хотел добавить к принятому ответу, потому что мне были непонятны несколько тонкостей:

Чтобы найти и изменить текст (не полностью заменить),

  1. На шаге «Найти» вы можете использовать регулярное выражение с «захватывающими группами», например, ваш поиск может осуществляться la la la (group1) blah blah (group2)с использованием круглых скобок.

  2. Затем на шаге «Заменить» вы можете ссылаться на группы захвата через $1и $2т. Д.

Так, например, в этом случае мы могли бы найти соответствующий текст просто <h1>.+?<\/h1>(без круглых скобок), но вставка скобок <h1>(.+?)<\/h1>позволяет нам ссылаться на промежуточное совпадение между ними, как $1на этапе замены . Прохладно!

Ноты

  • Чтобы включить регулярное выражение в виджете поиска, щелкните .*значок или нажмитеCmd/Ctrl Alt R

  • $0 относится ко всему матчу

  • Наконец, в исходном вопросе говорится, что замена должна происходить «внутри документа», поэтому вы можете использовать «Виджет поиска» ( Cmdили Ctrl+ F), который является локальным для открытого документа, вместо «Поиск», который открывает больший пользовательский интерфейс. и просматривает все файлы в проекте.


0

Убедитесь, что параметр «Учитывать регистр» выбран с помощью параметра «Использовать регулярное выражение», чтобы это совпадало. [AZ] * Если регистр совпадения не выбран, будут совпадать все буквы.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.