这是我的编码:
alpha = ["first", 55, 28]
beta = ["second", 89, 09]
gamma = ["third", 99, 40]
Run Code Online (Sandbox Code Playgroud)
这是我的预期结果:
first", 55, 28]
second", 89, 09]
third", 99, 40]
Run Code Online (Sandbox Code Playgroud)
我试过^.*?"用空替换正则表达式.但为什么我这样做呢?:
, 55, 28]
, 89, 09]
, 99, 40]
Run Code Online (Sandbox Code Playgroud)
查找并替换为
^.*?\["
输入
alpha = ["first", 55, 28]
beta = ["second", 89, 09]
gamma = ["third", 99, 40]
Run Code Online (Sandbox Code Playgroud)
结果
first", 55, 28]
second", 89, 09]
third", 99, 40]
Run Code Online (Sandbox Code Playgroud)
问题^.*?"是它正在逐个替换所有内容
你是从这个内容开始的
alpha = ["first", 55, 28]
beta = ["second", 89, 09]
gamma = ["third", 99, 40]
Run Code Online (Sandbox Code Playgroud)在第一次替换(如预期)后,内容变为此,
first", 55, 28]
beta = ["second", 89, 09]
gamma = ["third", 99, 40]
Run Code Online (Sandbox Code Playgroud)现在,在下一次替换中,光标仍然在行的开头.请注意,"此行中还有一个双引号(在文本之后first),因此RegEx再次匹配,因此它将再次替换第一个双引号之前的所有内容
, 55, 28]
beta = ["second", 89, 09]
gamma = ["third", 99, 40]
Run Code Online (Sandbox Code Playgroud)当您以这种方式继续时,您将获得输出:
, 55, 28]
, 89, 09]
, 99, 40]
Run Code Online (Sandbox Code Playgroud)所以用^.*?\["而不是^.*?"
编辑
如果您的父数组中有任何数组,那么您可以使用^.*?\=\s*\[\s*".
这个正则表达式也将处理空白字符.
输入
alpha = ["first", 55, 28]
beta = ["second", 89, 09]
gamma = ["third", 99, 40]
delta = ["fourth", ["55"], 28]
Run Code Online (Sandbox Code Playgroud)
更换后
first", 55, 28]
second", 89, 09]
third", 99, 40]
fourth", ["55"], 28]
Run Code Online (Sandbox Code Playgroud)
使用这个正则表达式:
^[^"]*"(.*)$
Run Code Online (Sandbox Code Playgroud)
括号中的数量称为捕获组,因为将为运行替换操作的文件中的每一行捕获其内容.您希望保留此捕获的材质,因此请\1在对话框中使用替换.
以下是如何使用它的屏幕截图: