Пытаясь выполнить поиск-замену в Visual Studio Code, я обнаружил, что его версия Regex отличается от полноценной Visual Studio. В частности, я пытаюсь объявить именованную группу, с string (?<p>[\w]+)
которой работает в Visual Studio, но не в Visual Studio Code. Он пожалуется на ошибку Invalid group
.
Помимо решения этой конкретной проблемы, я ищу информацию об особенностях регулярных выражений в коде Visual Studio и о том, где найти документацию по этому поводу, чтобы я мог помочь себе с любыми другими вопросами, на которые я могу наткнуться.
Полная версия Visual Studio использует регулярные выражения .NET, как описано здесь . Эта ссылка упоминается как документация для VS Code в другом месте на Stackoverflow, но это не так.
[^]
шаблон как соответствующий любому символу. Итак, ясно, что это движок регулярных выражений JS.Ответы:
Rust Regex на боковой панели поиска / замены в файлах
Роб Лоуренс из MSFT написал, что для поиска файлов используется регулярное выражение Rust. Документация по языку Rust описывает синтаксис.
JavaScript Regex в виджете "Найти / заменить в файле"
Александру Дима из MSFT написал, что виджет поиска использует регулярное выражение JavaScript. Как прокомментировал Виктор, документация ECMAScript 5 описывает синтаксис. То же самое и в Руководстве по регулярным выражениям JavaScript в MDN .
Проверить разницу
Боковая панель поиска в файлах не поддерживает,
(?=foobar)
тогда как виджет поиска в файле поддерживает этот синтаксис просмотра вперед.Что касается поиска / замены с группами
Для поиска / замены с группами, использование скобок
()
в группе и$1
,$2
,$3
,$n
заменить.Вот пример.
Перед:
После:
источник
Ответ Шона по- прежнему верен, однако, чтобы добавить обновление, недавно VS Code добавил возможность выбрать использование движка PCRE2 на основе Perl . Вы можете включить это в настройках config.
Это позволяет вам выполнять более сложные операции с регулярными выражениями, такие как просмотр вперед и обратные ссылки . Но, как указано ниже, регулярное выражение по-прежнему должно быть действительным регулярным выражением JavaScript .
И в качестве бонуса, если вы закончили здесь, пытаясь выполнять многострочный поиск, VS Code недавно также добавил эту функцию !
источник