繁体   English   中英

Notepad ++使用Regex查找和替换

[英]Notepad++ Find and Replace with Regex

这是我的编码:

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]

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

输入

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 ),因此正则表达式是再次匹配,所以它会再次在第一双引号替换之前的一切

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

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

所以使用^.*?\\["而不是^.*?"


编辑

如果您的父数组中有数组,那么您可以使用^.*?\\=\\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替换\\1

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

在此输入图像描述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM