
У меня есть текстовые строки в 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