Многострочный поиск регулярных выражений в коде Visual Studio

Многострочный поиск регулярных выражений не работает в версии VS Code версии 1.27.2.

Теоретически aaa(\n|.)*bbb должен найти строку, начинающуюся с aaa и заканчивая bbb, но она не работает. Решение, упомянутое здесь Многострочные регулярные выражения в Visual Studio Code также не работают.

Ответы

Ответ 1

Многострочный поиск добавлен в v1.29, выпущенном в ноябре 2018 года. См. многострочный поиск.

VS Code теперь поддерживает многострочный поиск! То же, что и в редакторе, регулярное выражение поиск выполняется в многострочном режиме, только если он содержит литерал \n. В представлении "Поиск" отображается подсказка рядом с каждым многострочным соответствием с количество дополнительных строк соответствия.

Эта функция возможна благодаря работе, выполненной в инструменте ripgrep реализовать многострочный поиск.

multiline search: October 2018 release notes


Многострочный поиск приходит в виджет поиска с v1.38. См. многострочные заметки "до выпуска".

Многострочный поиск в Find Widget

Виджет поиска теперь поддерживает многострочный текстовый поиск и замену. По нажав Ctrl+Enter, вы можете вставить новые строки в поле ввода.

multiline find widget.

Странно, что это Ctrl + Enter в виджете поиска, но Shift + Enter в панели поиска (см. ответ Deepu ниже). Shift + Enter имеет другие функции, когда фокус находится на виджете поиска.

Ответ 2

Без использования регулярных выражений.

Многострочный поиск теперь возможен в версии кода 1.30 и выше без использования регулярных выражений.

Введите Shift + Enter в поле поиска, чтобы вставить новую строку, и окно поиска увеличится, чтобы показать ваш полный многострочный запрос. Вы также можете скопировать и вставить многострочное выделение из редактора в окно поиска.

Example

Ответ 4

@Deepu Reghunath. Можете ли вы добавить в свой ответ пример того, как создать многострочный поиск, который работает между пробелами без пробелов?

https://code.visualstudio.com/updates/v1_29#_multiline-search

С помощью:

<body>[\n\s]+</body>

Это соответствует до тех пор, пока все строки между тегами являются пробелами.

<body>


</body>

Как можно сопоставить, если текст между тегами не является пробелом?

<body>
   <line>1</line>
   <line>2</line>
   <object>
      <name>Bob</name>
   </object>
</body>

Чем ты!

Ответ 5

Без регулярных выражений: вы можете скопировать многострочный текст и вставить его в форму "Найти в файлах":

enter image description here

Результат "Заменить все":

enter image description here