查找并替换为两个(某种程度)不相关的随机变量

时间:2019-03-20 19:31:06

标签: notepad++ notepad

编辑: 我已将主题名称更改为(希望)更准确地反映我的请求。我希望包括在下面的照片中圈出的两个变量,以免更改超出上述范围的任何内容。 https://i.stack.imgur.com/fXCtY.png

谢谢

   Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("AddlPointRadius")
   Hide(0)
   HideVar("ToggleTpRvsTpSqEval")
   HideUnused(0)
   ClrHide(1)
   Req(0)
   Uom("")
   MPTko("Pg")
   QtyTxt(0)
   Notes("")
   ProjDflt(0)
   LCol(0)
   LColTot(0)
   Dec(3)
   Dflt(".3")
   Max("5.000")
   Min("0.000")
  }

(原始) 我有一个非常大的文本文件,正在尝试进行大量查找和替换。我的问题是,我要替换的值都是随机的。有什么方法可以找到所有随机值并将其替换为单个值?我上传了一张我要替换的值的图片。我想将所有随机值都替换为.13

这是一张带有值示例的图片

https://i.stack.imgur.com/flS18.png

非常感谢您抽出宝贵的时间。

3 个答案:

答案 0 :(得分:1)

  • Ctrl + H
  • 查找内容:Num\s*\{[^}]+Name\("AddlPointRadius"\)[^}]+Dflt\("\K[^"]+
  • 替换为:.13
  • 检查环绕
  • 检查正则表达式
  • 全部替换

说明:

Num\s*\{                    # literally
[^}]+                       # 1 or more non closing curly brace
Name\("AddlPointRadius"\)   # literally
[^}]+                       # 1 or more non closing curly brace
Dflt\("                     # literally
\K                          # forget all we have seen until this position
[^"]+                       # 1 or more non quote (i.e. the value to be changed)

替换:

.13         # the new value

给出:(我已经简化了您的示例)

Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("AddlPointRadius")
   LColTot(0)
   Dec(3)
   Dflt(".3")
   Max("5.000")
   Min("0.000")
}
Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("SomethingElse")
   LColTot(0)
   Dec(3)
   Dflt(".3")
   Max("5.000")
   Min("0.000")
}
Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("AddlPointRadius")
   LColTot(0)
   Dec(3)
   Dflt(".3")
   Max("5.000")
   Min("0.000")
}

给定示例的结果

Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("AddlPointRadius")
   LColTot(0)
   Dec(3)
   Dflt(".13")
   Max("5.000")
   Min("0.000")
}
Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("SomethingElse")
   LColTot(0)
   Dec(3)
   Dflt(".3")
   Max("5.000")
   Min("0.000")
}
Num {
   Desc("AddlPointRadius (Enter 1 in NOTES To Unhide \"MixPointMod\")")
   Name("AddlPointRadius")
   LColTot(0)
   Dec(3)
   Dflt(".13")
   Max("5.000")
   Min("0.000")
}

屏幕截图:

enter image description here

答案 1 :(得分:0)

解决方案:

一种实现方法是使用查找和替换功能激活正则表达式。

  1. 打开“查找和替换”对话框
  2. 选中左下角的“正则表达式”框
  3. 使用Dflt\("[.,0-9]*"\)
  4. 填充查找内容:
  5. 用<{1}替换

运行它。

说明:

此正则表达式表示任何以Dflt(".13")开头,后跟任意数量的Dflt(".或任意顺序的数字的字符串,然后是,

查找内容字段中的")用于转义括号并允许它们完全匹配,因为\(具有一个正则表达式中的特定功能。

搜索将匹配文件中与此模式匹配的任何文件,然后替换为您指定的内容。

答案 2 :(得分:0)

是的,使用正则表达式是可能的。

这里是一个例子。替换所有出现的 Dflt(“。#”)  与 Dflt(“。13”)

  1. 打开搜索并替换(Ctrl + H)
  2. 将搜索模式从正则表达式更改为正则表达式
  3. 使用以下正则表达式:“ {查找内容”框中的(Dflt\(".[0-9]*"\))
  4. 在“替换为”文本框中放置Dflt\(".13"\)(将“ .13”替换为所需的任何值)
  5. 全部替换

enter image description here