Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VS Code Regex find and replace with lowercase, use \l or \L if possible

Is there a way to do a find and replace (regex) all uppercase characters in the matching strings with lowercase ones? Preferably in VS Code or IntelliJ I already have my regex ready.

Edit: To be clear I already know who to find the matches. But looking for that function to replace all uppercase matches with lowercase ones

like image 219
Gísli Freyr Svavarsson Avatar asked Jan 17 '20 10:01

Gísli Freyr Svavarsson


People also ask

How do I change the regex code in Visual Studio?

How to enable VSCode regex replace. First, you need to press Ctrl + H on Windows and Linux, or ⌥⌘F on Mac to open up search and replace tool. In order to activate regex search and replace in VSCode, you have to click on the . * button near the input.

How do 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.

What type of regex does VSCode use?

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


1 Answers

There is support for the case modifiers \L, \l, \U and \u Find/Replace (from Build 1.47 for replacing strings in an editor, and from Build 1.49 it also works in the Find/Replace across the workspace (see https://github.com/microsoft/vscode/pull/105101)).

So you just have to put the \l modifier in front of all your matched uppercase groups, like

\l$1 see regex101 demo1

or just put the \L in front of it all, like \L(rest of replace here). see regex1010 demo2


Note that these modifiers work a little differently than you might be used to. For instance:

(de)(pth) Search

\U$1$2 Replace

DEPTH expected result

DEpth vscode result

The case modifier only works on the immediate capture group. Not until it encounters \E or the end of the replace string.

I assume for this same reason \E isn't implemented in vscode at all, as it would be irrelevant given that only the immediate capture group is modified.

So to get DEPTH as the result you should use \U$1\U$2.

The modifiers can also be stacked - for example, \u\u\u$1 will uppercase the first 3 characters of the group, or \l\U$1 will lowercase the first character, and uppercase the rest.

Currently, these are only supported in the editor's find widget, and not in "Find in Files".

  • from https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_47.md#case-changing-in-regex-replace and https://code.visualstudio.com/updates/v1_49#_workbench.
like image 122
Mark Avatar answered Oct 08 '22 22:10

Mark