VSCode正则表达式找到&替换子匹配数学?

时间:2016-01-05 18:06:25

标签: regex visual-studio-code

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

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

我可以在vscode中进行正则表达式查找但是如何引用数学和数据的子匹配?更换? submatch(1)在vscode中不起作用?

感谢。

6 个答案:

答案 0 :(得分:193)

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

答案 1 :(得分:63)

用一个例子来增加本杰明的答案:

Find        Carrots(With)Dip(Are)Yummy
Replace     Bananas$1Mustard$2Gross
Result      BananasWithMustardAreGross

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

答案 2 :(得分:35)

只是添加另一个例子:

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

我在图片中使用了find + replace工具(ctrl + h): Find and replace

答案 3 :(得分:10)

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

因此,如果这是您首次与以下任何人联系:

要查找和修改文本,

  1. 在“查找”步骤中,可以将正则表达式与“捕获组”配合使用,例如I want to find (group1) and (group2),使用括号。这样可以找到与I want to find group1 and group2相同的文本,但是区别在于您可以在下一步中引用group1group2

  2. 在“替换”步骤中,您可以通过$1$2等引用捕获组,因此可以将句子更改为I found $1 and $2 having a picnic,这将输出I found group1 and group2 having a picnic.

注意:

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

  • $0是指整个比赛

答案 4 :(得分:2)

另一个简单的例子:

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

用于通过情感/ css将HTML转换为JSX!

答案 5 :(得分:1)

在我的情况下,$ 1无效,但是$ 0可以正常工作。

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

Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}

Regex Replace String for Laravel Translation