Notepad ++使用Regex查找和替换

时间:2016-08-10 05:17:36

标签: regex notepad++

这是我的编码:

alpha = ["first", 55, 28]
beta  = ["second", 89, 09]
gamma = ["third", 99, 40]

这是我的预期结果:

first", 55, 28]
second", 89, 09]
third", 99, 40]

我尝试将^.*?"的正则表达式替换为空。但为什么我会这样做?:

, 55, 28]
, 89, 09]
, 99, 40]

3 个答案:

答案 0 :(得分:9)

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

<强>输入

alpha = ["first", 55, 28]
beta  = ["second", 89, 09]
gamma = ["third", 99, 40]

<强>结果

first", 55, 28]
second", 89, 09]
third", 99, 40]

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

  1. 您已从此内容开始

    alpha = ["first", 55, 28]
    beta  = ["second", 89, 09]
    gamma = ["third", 99, 40]
    
  2. 首次替换后(如预期的那样),内容变为此,

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

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

    , 55, 28]
    , 89, 09]
    , 99, 40]
    
  5. 因此请使用^.*?\["代替^.*?"

    修改

    如果您的父数组中有数组,则可以使用^.*?\=\s*\[\s*" 这个正则表达式也将处理空白字符。

    <强>输入

    alpha = ["first", 55, 28]
    beta  =   ["second", 89, 09]
    gamma =      ["third", 99, 40]
    delta = ["fourth", ["55"], 28]
    

    更换后

    first", 55, 28]
    second", 89, 09]
    third", 99, 40]
    fourth", ["55"], 28]
    

答案 1 :(得分:6)

使用此正则表达式:

<exec program="${environment::get-variable('WinDir')}\system32\cmd">
    <arg value="/c &quot;rmdir /q /s ${Build.BuildFolder}\WebApplication\node_modules&quot;" />
</exec>

括号中的数量称为捕获组,因为将为运行替换操作的文件中的每一行捕获其内容。您希望保留此捕获的材料,因此请在对话框中使用^[^"]*"(.*)$ 替换。

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

enter image description here

答案 2 :(得分:1)

你可以尝试这个.*=\s?\[。当然所有设置为@TimBiegeleisen都显示出来。