Notepad ++使用Regex查找和替换

use*_*399 10 regex notepad++

这是我的编码:

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)

Ram*_*asi 9

查找并替换为 ^.*?\["

输入

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)

问题^.*?"是它正在逐个替换所有内容

  1. 你是从这个内容开始的

    alpha = ["first", 55, 28]
    beta  = ["second", 89, 09]
    gamma = ["third", 99, 40]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在第一次替换(如预期)后,内容变为此,

    first", 55, 28]
    beta  = ["second", 89, 09]
    gamma = ["third", 99, 40]
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,在下一次替换中,光标仍然在行的开头.请注意,"此行中还有一个双引号(在文本之后first),因此RegEx再次匹配,因此它将再次替换第一个双引号之前的所有内容

    , 55, 28]
    beta  = ["second", 89, 09]
    gamma = ["third", 99, 40]
    
    Run Code Online (Sandbox Code Playgroud)
  4. 当您以这种方式继续时,您将获得输出:

    , 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)


Tim*_*sen 6

使用这个正则表达式:

^[^"]*"(.*)$
Run Code Online (Sandbox Code Playgroud)

括号中的数量称为捕获组,因为将为运行替换操作的文件中的每一行捕获其内容.您希望保留此捕获的材质,因此请\1在对话框中使用替换.

以下是如何使用它的屏幕截图:

在此输入图像描述