Найти и заменить двумя (несколько) некоррелированными случайными величинами - PullRequest
0 голосов
/ 20 марта 2019

РЕДАКТИРОВАТЬ: Я изменил название своей темы, чтобы (надеюсь) более точно отразить мою просьбу. Я хочу включить две переменные, обведенные кружком на фото ниже, чтобы не изменять ничего за пределами указанного диапазона. 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 ]

1 голос
/ 21 марта 2019
  • Ctrl + H
  • Найти что: Num\s*\{[^}]+Name\("AddlPointRadius"\)[^}]+Dflt\("\K[^"]+
  • Заменить на: .13
  • check Wrap вокруг
  • check Регулярное выражение
  • Заменить все

Пояснение:

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

0 голосов
/ 20 марта 2019

Да, это возможно с помощью регулярного выражения.

Вот пример.Чтобы заменить все вхождения Dflt (". #") на Dflt (". 13")

  1. Откройте Поиск и замените (Ctrl + H).)
  2. Изменить режим поиска с нормального на регулярное выражение
  3. Используйте это регулярное выражение: (Dflt\(".[0-9]*"\)) в поле «Найти что»
  4. Поместите Dflt\(".13"\) в поле «Заменить на текстовое поле (замените «.13» на любое нужное вам значение)
  5. Заменить все

enter image description here

0 голосов
/ 20 марта 2019

Решение:

Один из способов сделать это - использовать функцию поиска и замены, активирующую регулярные выражения.

  1. Открыть диалог поиска и замены
  2. Проверить "Поле "Регулярное выражение" в левом нижнем углу
  3. Заполнить Найти что: с Dflt\("[.,0-9]*"\)
  4. Заполнить Заменить на: на Dflt(".13")

Запустите его.

Объяснение:

Это регулярное выражение представляет любую строку, начинающуюся с Dflt(", за которой следует любое количество . с, , или цифры в любом порядке, за которыми следуют ")

\ в поле Find what используются для экранирования скобок и позволяют точно их сопоставить,поскольку ( и ) имеют определенную функцию в регулярных выражениях.

Поиск будет соответствовать любому фрагменту файла, который соответствует этому шаблону, а затем заменяется указанным содержимым.

...