[ID CS4-CS6] Два раза одно слово в одном фрейме

  • Автор темы Автор темы Jeine
  • Дата начала Дата начала

Jeine

Да здравствует разум! Да сгинет маразм!
Топикстартер
15 лет на форуме
Сообщения
7 817
Реакции
6 638
Как найти встречающееся два раза одно и то же слово в одном фрейме?
 
Если на известном расстоянии друг от друга, то грепом это можно сделать.
Если на произвольном и неизвестном расстоянии, то нельзя, насколько я знаю.
 
  • Спасибо
Реакции: Jeine
На неизвестном и произвольном.
 
Для начала, grep может подсветить/выделить только одно слово/найденный результат за раз.
Пару слов подсветить не получится при всем желании. То есть всегда будет подсвечиваться дубликат, а не "источник".
А найти дубликат можно.
(\b\w+\b) .*\K\b\1\b
 
  • Спасибо
Реакции: К.Т.
Пробел в выражении, наверное, лишний будет, после слова ведь и знак препинания может идти.
Вот так получше: (\b\w+\b).*\K\b\1\b
Этот вариант может многое пропустить.
Например?
 
Например, в тексте два слова "Вася" и два слова "Петя".
Причём или первый, или оба Пети находятся между Васями.
Тогда Петя не будет найден.
Не факт, что это все возможные засады.
 
С дубликатами обязательно надо что-то делать, например, удалять, и затем начинать новый поиск.
Греп не составляет массив слов и не перебирает остальные слова на предмет совпадения. Он находит первое слово с дубликатом, подсвечивает дубликат и на этом останавливается.

Как вариант - в условие поиска можно включить критерий "цвет текста черный", в условие замены "цвет текста красный", чтобы тот же дубликат повторно не попадал в поиск.
 
Последнее редактирование:
Я в курсе.
Но после нахождения дубликата он продолжает поиск с этого места.
Назад он не возвращается и всё, что отсеклось \K, не проверяет.
 
Как вариант - в условие поиска можно включить критерий "цвет текста черный", в условие замены "цвет текста красный", чтобы тот же дубликат повторно не попадал в поиск.
Плохой пример - с \K не работает.
 
Вижу проблемы.
Можно еще вот так перевернуть с ног на голову, чтобы находилось первое слово из пары. Выглядит надежнее.
(\b\w+\b)(?=.*\b\1\b)
 
  • Спасибо
Реакции: blacksolg, Jeine и К.Т.
Вычитать корректором уже предлагали?
 
Можно исключить цифры из поиска?
Вместо \w написать например [\u\l] — это значит прописные и строчные буквы.
Ну или другое нужное выражение.
Например [А-яЁё] — только кириллические.
 
Последнее редактирование:
  • Спасибо
Реакции: blacksolg и Jeine