【问题标题】:Notepad++ Find and Replace with RegexNotepad++ 使用正则表达式查找和替换
【发布时间】:2017-03-08 16:31:00
【问题描述】:

这是我的编码:

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]

【问题讨论】:

  • 它应该可以工作..你可以尝试使用^[^"]*"..
  • 您是否启用了多行模式(如果有)?
  • 感谢 Rock 和 Jan 的及时回复。我认为 Rock 提供的正则表达式确实符合我愿意替换的模式。但是,一旦我单击 Notepad++ 中的“全部替换”按钮。似乎在替换后进行替换,直到所有匹配的模式都消失了。
  • 您确定您的正则表达式不起作用吗?它的行为就像你遗漏了问号
  • @mri 我实际上认为 notepad++ 中存在错误。如果您将^.*?" 替换为X(即something),它会按预期工作,但如果您替换为空白,则它不起作用。我怀疑存在一个错误,即替换为空白后匹配指针设置不正确。

标签: regex notepad++


【解决方案1】:

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

输入

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]
    

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


编辑

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

【讨论】:

  • 解释是正确的,但解决方法不对,试试alpha = ["first", ["55"], 28]。它可能不是 OP 在输入中的内容,但关键是您只需匹配整行即可使用 Replace all 进行这样的替换。
  • @WiktorStribiżew 我明白,可能有很多这样的情况,尽管我只处理了 OP 提供的代码。无论如何,感谢您指出这一点,我已经相应地更新了我的答案。
【解决方案2】:

使用这个正则表达式:

^[^"]*"(.*)$

括号中的数量称为捕获组,因为它的内容将被捕获到文件中运行替换操作的每一行。您想保留此捕获的材料,因此请在对话框中使用 \1 的替换。

这里是如何使用它的屏幕截图:

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2015-01-11
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多