Grep для индексного указателя
Допустим, вы создали индексный указатель, воспользовавшись скриптами IndexBrutal (Marc Autret) или indexfrom word list (Peter Kahrel). При помощи скриптов эта работа выполняется достаточно быстро. Следующим этапом обычно проставляют буквы алфавита как заголовки. Чтобы было понятно о чем идет речь, ниже приведены два рисунка: исходный вариант, и с буквами-заголовками.
Быстро проставить такие заголовки можно при помощи следующего GREP-выражения:
Честно говоря, я даже и не думал, что эту задачу можно решать при помощи Grep-выражений. Но, как видите, даже ложка в руках специалиста может стать страшным оружием.
Краткое пояснение. Идея заключается в выборе двух строк и сравнении их первых символов. Если символы отличаются друг от друга, то в новую строку производится вставка буквы-заголовка.
Более подробное описание работы Grep-выражения вы можете прочитать на сайте indyGrep. Мне, поверхностно знающему Grep и совершенно не знающему французский язык, разобраться с ним не удалось. Быть может это сделает кто-то из читателей сайта, за что будет навечно внесен в аллею славы нашего сайта :-). Evgenius, вы готовы?
Замечание. Поскольку первую строку индексного указателя не с чем сравнивать, то буква-заголовок не будет создана. Это можно сделать и вручную, или ввести какую-либо фиктивную строку перед первой строкой.
Очень интересная статья. У меня, как человека далекого от ГРЕП, вопрос: Где в текстовом режиме стока поиска и строка замены? Только в картинках… жаль
перевод на нормальный язык выражения
ищем
любой набор, оканчивающийся переводом строки [(.+\r)]
перед которым должна быть прописная с начала строки [(?<=^(\u))]
после которого [?!] не должно следовать с новой строки ТО ЧТО МЫ НАШЛИ выше в позитиве [^\1]
но должно быть прописной буквой (\u)
Только что на RUDTP (http://forum.rudtp.ru/showthread.php?t=28482&p=529724&viewfull=1#post529724) пользователь andrejk расшифровал.
ищем
любой набор, оканчивающийся переводом строки [(.+\r)]
перед которым должна быть прописная с начала строки [(?<=^(\u))]
после которого не должно [?!] следовать с новой строки ТО ЧТО МЫ НАШЛИ выше в позитиве [^\1]
но должно быть прописной буквой (\u)
а вообще-то — там на сайте источника и без знания французского всё понятно))) только сейчас посмотрел…
Спасибо, за статью!