VSCode 正则表达式查找和替换子匹配数学?

VSCode regex find & replace submatch math?

%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@

我在 vim 中使用这个正则表达式搜索和替换命令从每个匹配的 ID 中减去一个常量。

我可以在 VSCode 中查找正则表达式,但如何引用 submatch 进行数学运算和替换? submatch(1) 在 VSCode 中不起作用?

谢谢。

给定 (foobar) 的正则表达式,您可以使用 引用第一组,如果替换输入字段中有更多组,则依此类推。

用一个例子来补充本杰明的回答:

Find        Carrots(With)Dip(Are)Yummy
Replace     BananasMustardGross
Result      BananasWithMustardAreGross

括号中的任何内容都可以是正则表达式。

再补充一个例子:

我正在替换 img html 标签中的 src 属性,但我只需要替换 src 并保留 img 声明和 src 属性之间的任何文本。

如图所示,我使用了查找+替换工具 (ctrl+h):

在我的例子中,$1 没有用,但 $0 对我来说很好用。

在这种情况下,我试图用正确的格式替换字符串以在 Laravel 中翻译它们,我希望这对其他人有用,因为我花了一些时间来整理它!

Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('[=10=]') }}

Regex Replace String for Laravel Translation

另一个简单的例子:

Search: style="(.+?)"
Replace: css={css``}

对于使用 emotion/css 将 HTML 转换为 JSX 很有用!

对于初学者来说,接受的答案是正确的,但如果您对 VSC 或 Regex 都不那么熟悉,则答案会有点简洁。

所以,如果这是您第一次联系:

查找和修改文本,

  1. 在 "Find" 步骤中,您可以将正则表达式与 "capturing groups," 结合使用,例如I want to find (group1) and (group2),使用括号。这会找到与 I want to find group1 and group2 相同的文本,但不同之处在于您可以在下一步中引用 group1group2

  2. 在"Replace"步骤中,可以通过</code>、<code>等方式引用捕获组,所以可以将句子改为I found and having a picnic,这将输出 I found group1 and group2 having a picnic.

备注:

  • () 内部或外部的任何内容都可以是正则表达式,而不只是一个字符串。

  • [=19=]指整场比赛