簡體   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