Как заменить n-ное слово в результате поиска в Notepad++?

Как заменить n-ное слово в результате поиска в Notepad++?

У меня есть текстовые строки в Notepad++, как показано ниже:

dog cat duck fan dog donkey

Я хочу заменить второе упоминание слова «собака» на «павлин», как показано ниже.

dog cat duck fan peacock donkey

решение1

Вы можете решить эту проблему с помощью так называемогообычные выражения, см. ниже. Я не уверен, знакомы ли вы с ними, но регулярное выражение (dog.*)(dog)будет соответствовать всем строкам, где слово «собака» встречается дважды, и $1peacockвы замените результат поиска первой частью совпадения ( dog.*), за которой следует peacock. Обязательно установите режим поиска в нижней части диалогового окна на «Регулярное выражение».

введите описание изображения здесь

Это даст следующий результат:

введите описание изображения здесь

решение2

Это n-ное слово или второе вхождение слова, которое нужно заменить?

Для первого варианта используйте регулярное выражение, например:

Введите CTRL+ hдля открытия окна замены.

В Найти что: ^(([^ ]+ ){4})([^ ]+ )(.*)
Заменить на: $1peacock$3
Снимите все флажки и выберите переключатель Регулярное выражение.

Объясняем RegEx:

  • ^якоря в начале строки, $в конце строки
  • ()создать группу захвата
  • ([^ ]+ )обозначают []класс, ^внутри означает отрицательный класс, так что это означает - не пробел, собирает +по крайней мере один, но как можно больше. за которым следует пробел. В общей сложности это будет соответствовать первому слову.
  • следующее {4}получает 4 слова, и поскольку это заключено в другой набор скобок, эта группа захвата получает первые четыре слова
  • следующее слово и пробел — это то, что нужно заменить, ([^ ]+ )за которым следует остальная часть строки(.*)$
  • Замена повторно вставляет первую (вложенную) группу с $1заменой peacockи оставшейся частью строки, $3отбрасывая 5-е слово.$2

Связанный контент