I want to upgrade my rxjs code to the new syntax. to do so I use vscode and "find and replace" by regex.
the old syntax:
.pipe(
catchError((err) => {
...
})
)
.subscribe((res) => {
...
});
the new syntax is:
.subscribe({ next: (res) => { ... }, error: (err) => { ... });
I try to do with this regex I built but I seems that the regex is wrong and not sure why because in that regex I find what between catchError
and subscribe
. So how to make it work in the correct way?
\.pipe(\s\ScatchError(.*).subscribe(.*)
Also how can I replace everywhere I match this pattern to new pattern? regex101.com
You can use
^\.pipe\(\n\s*catchError([\w\W]*?\}\))\n\s*\)\s*\.subscribe([\w\W]*?\}\));$
See the regex demo.
Details:
^
- start of a line\.pipe\(
- a literal .pipe(
text\n
- a line break\s*
- 0+ whitespacescatchError
- a literal word([\w\W]*?\}\))
- Group 1: any zero or more chars, as few as possible, up to and including the })
substring\n\s*
- a line break and 0+ whitespaces\)
- a )
char\s*
- 0+ whitespaces\.subscribe
- a literal .subscribe
string([\w\W]*?\}\))
- Group 2: any zero or more chars, as few as possible, up to and including the })
substring;$
- a ;
char at the end of the line.