2017-01-23 9 views
-1

Исходное примечание: Просьба отметить это как дубликат, если он уже существует, я не знал, как его искать.Найти и заменить * похожие * строки в Notepad ++

Есть несколько строк в блокноте, которые выглядят следующим образом:

Line 1: a x a x a x a 
... 
Line m: a y a y a y a 
... 
Line n: a z a z a z a 

«...» представляют другие строки с каким-либо содержанием.

И что мне нужно сделать, это поиск паттеров, где я могу поддерживать различную часть, которая отличается.

Проблема в том, что я не могу просто «заменить все экземпляры« a », потому что мне нужно просто НЕКОТОРЫЕ из экземпляров« a », которые нужно заменить; В этом случае «заменить второй экземпляр„а“каждой соответствующей строке»

Поэтому мне нужно искать для всех строк, которые имеют

a 'variable data_1' a 'variable data_2' a 'variable data_3' a 

И заменить его

a 'variable data_1' **b** 'variable data_2' a 'variable data_3' a 

И конечный результат должен выглядеть следующим образом:

Line 1: a x b x a x a 
... 
Line m: a y b y a y a 
... 
Line n: a z b z a z a 

То, что я не знаю: Как я могу как-то определить, что «эта часть текста будет переменной»?

Если это невозможно сделать на АЭС, если вы знаете о программном обеспечении, которое может это сделать, сообщите мне об этом!

ответ

2

Вы можете искать:

((a)\s*'[^']*'\s*)\2((?:\s*'[^']*'\s*\2)+) 

и заменить:

\1**b**\3 

В шаблоне поиска,

  • \1 является блок перед маркером, который мы хотим изменить
  • \2 является повторением d маркер которого второго повторение мы хотим изменить
  • \3 является блоком после маркеров, который мы хотим изменить

и второй итерации Неоднократных маркеров остаются из группы, потому что мы заменим его другое значение в заменяющем тексте.

+0

Спасибо, однако, это работало: ((a) \ s + [^ \ s] + \ s +) \ 2 ((?: \ S + [^ \ s] + \ s + \ 2) +), но только если у меня нет другого содержимого между строками этой области. Если я это сделаю, это только внесет изменения в первое вхождение. Тот, что в текущем редактировании не работает вообще. –

+0

Хорошо, я понимаю, что вы там делали, молодец. –