1

我想将我的 rxjs 代码升级到新语法。为此,我使用 vscode 并通过正则表达式“查找和替换”。

旧语法:

.pipe(
 catchError((err) => {
   ...
 })
 )
 .subscribe((res) => {
   ...
 });

新语法是:

 .subscribe({ next: (res) => { ... }, error: (err) => { ... });

我尝试使用我构建的这个正则表达式,但我似乎正则表达式是错误的,不知道为什么,因为在那个正则表达式中我找到了 and 之间catchError的内容subscribe。那么如何让它以正确的方式工作呢?

\.pipe(\s\ScatchError(.*).subscribe(.*)

另外,我如何替换任何我匹配这个模式到新模式的地方? 正则表达式101.com

4

1 回答 1

1

您可以使用

^\.pipe\(\n\s*catchError([\w\W]*?\}\))\n\s*\)\s*\.subscribe([\w\W]*?\}\));$

请参阅正则表达式演示

详情

  • ^- 一行的开始
  • \.pipe\(- 文字.pipe(文本
  • \n- 换行符
  • \s*- 0+ 个空格
  • catchError- 一个字面意思
  • ([\w\W]*?\}\))- 第 1 组:任何零个或多个字符,尽可能少,直到并包括})子字符串
  • \n\s*- 一个换行符和 0+ 个空格
  • \)- 一个)字符
  • \s*- 0+ 个空格
  • \.subscribe- 文字.subscribe字符串
  • ([\w\W]*?\}\))- 第 2 组:任何零个或多个字符,尽可能少,直到并包括})子字符串
  • ;$-;行尾的字符。
于 2020-11-20T16:13:30.580 回答