Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Match the beginning of a file in a VSCode regex search

I'm trying to match the beginning of a file in a VSCode regex search to find and remove the following pattern:

//
Anything else to leave in place
etc.

I'd like to remove the first line in all files that contain //\n as the first characters. However when I perform a regex search for //\n it matches all occurences in all files obviously, regardless of their position in the file.

The regex language mentions the existence of \A to match the beginning of a line, or file in some editors, but VSCode rejects this regex as invalid: \A//\n.

So my question is, how can I match the beginning of a file in VSCode to achieve what I need?

like image 898
Florian Bienefelt Avatar asked Feb 06 '20 08:02

Florian Bienefelt


People also ask

Can you use regex in Vscode search?

Vscode has a nice feature when using the search tool, it can search using regular expressions. You can click cmd+f (on a Mac, or ctrl+f on windows) to open the search tool, and then click cmd+option+r to enable regex search. Using this, you can find duplicate consecutive words easily in any document.

How do you search within a file in VS code?

Search across files# VS Code allows you to quickly search over all files in the currently opened folder. Press Ctrl+Shift+F and enter your search term. Search results are grouped into files containing the search term, with an indication of the hits in each file and its location.

What regex does VS code use?

Visual Studio uses . NET regular expressions to find and replace text.


1 Answers

The beginning of a file in Visual Studio Code regex can be matched with

^(?<!\n)
^(?<![\w\W])
^(?<![\s\S\r])

You may use

Find What: ^//\n([\s\S\r]*)
Replace With: $1

Or, since nowadays VSCode supports lookbehinds as modern JS ECMAScript 2018+ compatible environments, you may also use

Find What: ^(?<![\s\S\r])//\n
Replace With: empty

If you wonder why [\s\S\r] is used and not [\s\S], please refer to Multi-line regular expressions in Visual Studio Code.

Details

  • ^ - start of a line
  • // - a // substring
  • \n - a line break
  • ([\s\S\r]*) - Group 1 ($1): any 0 or more chars as many as possible up to the file end.

The ^(?<![\s\S\r])//\n regex means:

  • ^(?<![\s\S\r]) - match the start of the first line only as ^ matches start of a line and (?<![\s\S\r]) negative lookbehind fails the match if there is any 1 char immediately to the left of the current location
  • //\n - // and a line break.
like image 118
Wiktor Stribiżew Avatar answered Oct 19 '22 00:10

Wiktor Stribiżew