在大括号之间搜索和替换文本(VS代码)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在大括号之间搜索和替换文本(VS代码)相关的知识,希望对你有一定的参考价值。

我一直在寻找如何在VS Code中替换括号之间的文本。这是我要替换内容的示例或文件:

capital = 267
oob = "AFG_1936"
set_technology = {
 CAS1 = 1
 CAS2 = 1
 CAS3 = 1
 CAS4 = 1
 radio_detection = 1
 rocket_engines = 1
 sp_rocket1 = 1
 sp_rocket2 = 1
 strategic_bomber1 = 1
 strategic_bomber2 = 1
 strategic_bomber3 = 1
 suicide_craft = 1
 synth_oil_experiments = 1
 tactical_bomber1 = 1
 tactical_bomber2 = 1
 tactical_bomber3 = 1
 tank_landing_craft = 1
 transport = 1
}
add_ideas = {
    population_growth_rapid
}
set_convoys = 200
...

我想替换或者至少选择“set_technology = {”和它的结束括号之间的内容。我试图搜索“{。}”,或类似“{。+ [^ n] +}”之类的东西,但似乎没有任何工作......如有必要,我可以切换到Visual Studio 2017

提前谢谢,Stuffi

答案

这个正则表达式是解决方案:

set_technology = {[^}]*?}

应用于您的文本,它给出一个匹配。它有三个部分:

1. set_technology = {

2.[^}]*?:除了}之外的所有字符尽可能少的字符。 (lazy quantifier

3. }

我们需要使用lazy quantifier*?”而不是greedy quantifier*”。 lazy quantifier尝试捕获尽可能少的字符。我们想要在第一个}而不是最后一个}之后停止捕获文本。

如果我们使用greedy quantifier,那么匹配将包含:

set_technology = {
...
}
add_ideas = {
...
}

但是使用lazy quantifier它只包含:

set_technology = {
...
}

以上是关于在大括号之间搜索和替换文本(VS代码)的主要内容,如果未能解决你的问题,请参考以下文章

RegEx - 在引号之间查找文本并在括号之间替换

Eslint 在大括号之间添加了不必要的空格,Prettier 显示错误

VS C++学习--设置代码行号背景颜色大括号垂直线对齐

在需要搜索和替换的代码中转义括号(Sublime Text2)

如何批量把TXT文本中括号之间的内容{内容都不一样}替换成NO

在sublime text和vs code中使用Regex进行替换的方式