Многострочный поиск регулярных выражений в коде Visual Studio
Многострочный поиск регулярных выражений не работает в версии VS Code версии 1.27.2.
Теоретически aaa(\n|.)*bbb
должен найти строку, начинающуюся с aaa и заканчивая bbb, но она не работает. Решение, упомянутое здесь Многострочные регулярные выражения в Visual Studio Code также не работают.
Ответы
Ответ 1
Многострочный поиск добавлен в v1.29, выпущенном в ноябре 2018 года. См. многострочный поиск.
VS Code теперь поддерживает многострочный поиск! То же, что и в редакторе, регулярное выражение поиск выполняется в многострочном режиме, только если он содержит литерал \n. В представлении "Поиск" отображается подсказка рядом с каждым многострочным соответствием с количество дополнительных строк соответствия.
Эта функция возможна благодаря работе, выполненной в инструменте ripgrep реализовать многострочный поиск.
Многострочный поиск приходит в виджет поиска с v1.38. См. многострочные заметки "до выпуска".
Многострочный поиск в Find Widget
Виджет поиска теперь поддерживает многострочный текстовый поиск и замену. По нажав Ctrl+Enter
, вы можете вставить новые строки в поле ввода.
.
Странно, что это Ctrl + Enter в виджете поиска, но Shift + Enter в панели поиска (см. ответ Deepu ниже). Shift + Enter имеет другие функции, когда фокус находится на виджете поиска.
Ответ 2
Без использования регулярных выражений.
Многострочный поиск теперь возможен в версии кода 1.30 и выше без использования регулярных выражений.
Введите Shift + Enter в поле поиска, чтобы вставить новую строку, и окно поиска увеличится, чтобы показать ваш полный многострочный запрос. Вы также можете скопировать и вставить многострочное выделение из редактора в окно поиска.
Ответ 3
Причина такого поведения очень проста.
Многострочный поиск еще не реализован.
см. Поддержка многострочного поиска для Глобального поиска
Ответ 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
Без регулярных выражений: вы можете скопировать многострочный текст и вставить его в форму "Найти в файлах":
Результат "Заменить все":