%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@
I am using this regex search and replace command in vim to subtract a constant from each matching id.
I can do the regex find in VSCode but how can I reference the submatch
for maths & replace? submatch(1)
does not work in VSCode?
Thanks.
This question is related to
regex
visual-studio-code
To augment Benjamin's answer with an example:
Find Carrots(With)Dip(Are)Yummy
Replace Bananas$1Mustard$2Gross
Result BananasWithMustardAreGross
Anything in the parentheses can be a regular expression.
Another simple example:
Search: style="(.+?)"
Replace: css={css`$1`}
Useful for converting HTML to JSX with emotion/css!
In my case $1 was not working, but $0 works fine for my purpose.
In this case I was trying to replace strings with the correct format to translate them in Laravel, I hope this could be useful to someone else because it took me a while to sort it out!
Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}
For beginners, the accepted answer is correct, but a little terse if you're not that familiar with either VSC or Regex.
So, in case this is your first contact with either:
To find and modify text,
In the "Find" step, you can use regex with "capturing groups," e.g. I want to find (group1) and (group2)
, using parentheses. This would find the same text as I want to find group1 and group2
, but with the difference that you can then reference group1
and group2
in the next step:
In the "Replace" step, you can refer to the capturing groups via $1
, $2
etc, so you could change the sentence to I found $1 and $2 having a picnic
, which would output I found group1 and group2 having a picnic.
Notes:
Instead of just a string, anything inside or outside the ()
can be a regular expression.
$0
refers to the whole match
Source: Stackoverflow.com