Соответствует началу файла в поиске регулярного выражения VSCode - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь сопоставить начало файла в поиске регулярных выражений VSCode, чтобы найти и удалить следующий шаблон:

//
Anything else to leave in place
etc.

Я хочу удалить первую строку во всех файлах, которые содержат //\n в качестве первых символов. Однако когда я выполняю поиск по регулярному выражению для //\n, он, очевидно, соответствует всем вхождениям во всех файлах, независимо от их положения в файле.

Язык регулярных выражений упоминает о существовании \A, чтобы соответствовать началу строка или файл в некоторых редакторах, но VSCode отклоняет это регулярное выражение как недопустимое: \A//\n.

Итак, мой вопрос: как сопоставить начало файла в VSCode для достижения того, что мне нужно?

1 Ответ

2 голосов
/ 06 февраля 2020

Вы можете использовать

Найти что : ^//\n([\s\S\r]*) Заменить на : $1

Или, поскольку в настоящее время VSCode поддерживает lookbehinds как современные JS ECMAScript 2018+ совместимые среды, вы также можете использовать

Find What : ^(?<![\s\S\r])//\n Заменить на : пусто

Если вам интересно, почему используется [\s\S\r], а не [\s\S], см. Многострочные регулярные выражения в коде Visual Studio .

Подробнее

  • ^ - начало строки
  • // - // подстрока
  • \n - разрыв строки
  • ([\s\S\r]*) - Группа 1 ($1): любые 0 или более символов до конца файла.

Регулярное выражение ^(?<![\s\S\r])//\n означает:

  • ^(?<![\s\S\r]) - сопоставить начало первой строки только тогда, когда ^ соответствует началу строки, а (?<![\s\S\r]) отрицательный вид сзади потерпел неудачу в сопоставлении, если слева от текущего местоположения есть 1 символ
  • //\n - // и разрыв строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...