CaptainFlint

Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору softes М-да... задачка... Слушай, а регулярным выражением ведь можно попробовать. Я сейчас поковырялся, и составил вот что: Код: Найти: ^((\S[^\n]*)\n( [^\n]*\n)+)\2\n Заменить на: \1 | Конечно, когда смотришь на готовое выражение - видишь жуть в синюю полосочку, но когда я его составлял, всё было очевидно. Во-первых, чтобы оно работало, как надо, требуется залезть в настройки и врубить многострочный поиск: Tools -> Customize -> Search -> Regular Expressions Can Match New Line Characters, а в поле ввода чуть ниже (Additional Lines...) ввести какое-нибудь число, не слишком большое (иначе тормоза будут), но которое заведомо больше, чем суммарное количество строк, относящихся к одному термину. Теперь о самом выражении. Суть в том, что ищем блок текста из нескольких строк, первая из которых начинается на непробельный символ, вторая, третья и т.д. начинаются с пробела, а самая последняя строка в точности совпадает с первой. И вот все такие куски текста заменяем на точно такие же куски, но с выброшенной последней строчкой. Такую замену нужно сделать несколько раз, пока не перестанет хоть что-то заменяться. PS: Конкретно по твоему варианту, к сожалению, ничего сказать не могу. Можно попытаться найти функцию, которая считывает содержимое буфера обмена в локальную строковую переменную - тогда не надо будет никаких супер-пупер-выражений, а просто конкатенация строк с нужным тебе содержимым. Т.е. что-то типа: Код: document.selection.EndOfDocument(true); temp_str = GetClipboardContents(); document.selection.Replace("^" + temp_str + "\\n","",eeFindNext | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp); | Проблема только в том, что я не знаю, существует ли такая функция (GetClipboardContents - это я просто с потолка первое попавшееся название взял)...
---------- Почему же, ё-моё, ты нигде не пишешь "ё"? |
| Всего записей: 5576 | Зарегистр. 11-11-2002 | Отправлено: 21:29 13-05-2005 | Исправлено: CaptainFlint, 21:32 13-05-2005 |
|