%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@
我在vim中使用此正则表达式搜索和替换命令从每个匹配的id中减去一个常量。
我可以在vscode中进行正则表达式查找但是如何引用数学和数据的子匹配?更换? submatch(1)在vscode中不起作用?
感谢。
答案 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属性之间保留任何文本。
答案 3 :(得分:10)
对于初学者来说,可接受的答案是正确的,但是如果您对VSC或Regex不那么熟悉,则可以略为简洁。
因此,如果这是您首次与以下任何人联系:
要查找和修改文本,
在“查找”步骤中,可以将正则表达式与“捕获组”配合使用,例如I want to find (group1) and (group2)
,使用括号。这样可以找到与I want to find group1 and group2
相同的文本,但是区别在于您可以在下一步中引用group1
和group2
:
在“替换”步骤中,您可以通过$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') }}