【发布时间】:2016-04-09 16:09:21
【问题描述】:
%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@
我在 vim 中使用这个正则表达式搜索和替换命令从每个匹配的 id 中减去一个常数。
我可以在 VSCode 中查找正则表达式,但如何引用 submatch 进行数学运算和替换? submatch(1) 在 VSCode 中不起作用?
谢谢。
【问题讨论】:
%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@
我在 vim 中使用这个正则表达式搜索和替换命令从每个匹配的 id 中减去一个常数。
我可以在 VSCode 中查找正则表达式,但如何引用 submatch 进行数学运算和替换? submatch(1) 在 VSCode 中不起作用?
谢谢。
【问题讨论】:
给定正则表达式(foobar),如果替换输入字段中有更多组,您可以使用$1 引用第一个组,依此类推。
【讨论】:
<p>(.*)</p> 替换为 <p>\n\t\t\t\t\t\t$1\n\t\t\t\t\t</p>。想象一下我手动操作。
"Bond" 替换为 "$0, James $0"。
用一个例子来补充本杰明的答案:
Find Carrots(With)Dip(Are)Yummy
Replace Bananas$1Mustard$2Gross
Result BananasWithMustardAreGross
括号中的任何内容都可以是正则表达式。
【讨论】:
【讨论】:
$1 没有替换
myTranslate="$1" 替换项目范围内的\[innerHtml\]\s*=\s*"'(.*)'\s*\|\s*translate\s*",它会随机跳过键并有时插入$1 而不是组值。更新到 1.28.0 解决了这个问题
在我的情况下,$1 不起作用,但 $0 对我来说可以正常工作。
在这种情况下,我试图用正确的格式替换字符串以在 Laravel 中翻译它们,我希望这对其他人有用,因为我花了一些时间来整理它!
Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}
【讨论】:
另一个简单的例子:
Search: style="(.+?)"
Replace: css={css`$1`}
用于将 HTML 转换为带有情感/css 的 JSX!
【讨论】:
对于初学者来说,公认的答案是正确的,但如果您对 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指的是整场比赛
【讨论】:
regex。