Новая фича: сделал возможность поиска с учетом тегов. Например, по
такой команде:
tagRegExp("[а-яё]<emphasis>[а-яё]+?</emphasis>|<emphasis>[а-яё]+?</
emphasis>[а-яё]","i","Найдено: курсивность части слова.");
скрипт будет искать слово, содержащее по меньшей мере одну курсивную и
одну некурсивную буквы одновременно.
Команда addRegExp работает так же, как и работала.
Раньше был уже топик про этот скрипт, там объяснение, что он делает:
http://groups.google.com/group/fiction-book-editor/browse_thread/thread/4c432b60489a2cd7#
В том топике уже не дает отвечать, поэтому создал новый.
Добавлены две фичи:
1) Теперь можно использовать конструкции типа look behind, т.е. (?
<= ... ) и (?<! ... ) , правда они могут стоять только в начале
регэкспа, но этого должно быть достаточно.
Эта фича позволяет делать такие регэкспы, чтобы выделялись только те
символы, которые нужны (раньше иногда приходилось выделять лишние
символы в начале).
2) Теперь можно задавать, в каких тегах искать по регэкспу, в каких
нет. Четвертый параметр (необязательный) функций addRegExp и tagRegExp
может выглядеть, например, так: "+poem -stanza +title".
"Плюс" - абзац должен быть вложен в указанный тег, "минус" - абзац
должен быть не вложен в указанный тег.
On 3 янв, 22:57, Sclex <scl...@gmail.com> wrote:
> Поиск по набору регэкспов v2.4
> Скачать:http://rghost.ru/3851835
> илиhttp://scripts.fictionbook.org/files/SearchWithRegexpSet_v24.rar
Пишу в скрипте
tagRegExp("(?<![а-яё])кго(?![а-яё])","i","Найдено: слово \"кго\" (\"кто
\" с опечаткой).");
этот вариант скрипт находит нормально.
а этот - нет...
tagRegExp("(?<![а-яё])нуда(?![а-яё])","i","Найдено: слово \"нуда
\" (\"ну да\" с опечаткой).");
И еще - на одном компе скрипт может одно и то же выражение находить, а
на другом - нет...
Пример:
addRegExp("^[З][\\x20\\xA0\\t\\n\\r\\f]","i","Найдено:буква З вместо
цифры 3 в начале строки");
У меня скрипт это выражение находит, а у Marina_Ch (если после З
используется неразрывный пробел) - нет...
On 3 янв, 22:57, Sclex <scl...@gmail.com> wrote:
> Поиск по набору регэкспов v2.4
> Скачать:http://rghost.ru/3851835
> илиhttp://scripts.fictionbook.org/files/SearchWithRegexpSet_v24.rar
> Пример:
> addRegExp("^[З][\\x20\\xA0\\t\\n\\r\\f]","i","Найдено:буква З вместо
> цифры 3 в начале строки");
>
> У меня скрипт это выражение находит, а у Marina_Ch (если после З
> используется неразрывный пробел) - нет...
Это, наверное, зависит от того, включен ли показ неразрывных пробелов
видимым символом. Дело в том, что если неразрывный пробел в регэкспе
записан самим собой (символом с кодом 160), то скрипт это специально
обрабатывает, подменяя неразрывный пробел в регэкспе на тот символ,
которым неразрывные пробелы сейчас выводятся в тексте. А \\xA0 не
подменяется, потому что я раньше думал, что для того, чтобы корректно
произвести такую замену, придется проанализировать всю структуру
регэкспа. Но я, кажется, ошибся: достаточно только проверить, четное
или нечетное количество слэшей стоит перед "xA0". (Двойные слэши в
исходнике скрипт видит, анализируя строковую переменную, как
одинарные.) Если в исходнике написано "\\\\xA0", т.е. скрипт видит
четное число тире (2), то заменять не надо, т.к. такой фрагмент
регкэспа находит текстовую подстроку "\xA0", а не неразрывный пробел.
Если неразрывный пробел в регэкспе записывать самим собой, проблемы
быть не должно.
Выпущу новую версию с доработкой насчет "\\xA0", спасибо за репорт.
Единственное изменение - теперь в регэкспах можно писать "\\xA0", и
это будет находить неразрывный пробел независимо от того, каким
символом показываются неразрывные пробелы в документе.
On 6 янв, 21:56, Sclex <scl...@gmail.com> wrote:
> Поиск по набору регэкспов v2.5:http://scripts.fictionbook.org/files/SearchWithRegexpSet_v25.rar
Поиск по набору регэкспов v2.6:
http://rghost.ru/3889371
или
http://scripts.fictionbook.org/files/SearchWithRegexpSet_v26.rar
Скрипт как бы подвисает на тяжелых, но чистых текстах, т.е. когда
много искомых вхождений в документе - все ок, а когда он долго ищет по
большому тексту, то иногда говорит, что мол "сценарий на данной
странице замедляет работу ИЕ, при продолжении сценария компьютер может
не реагировать, прервать сценарий? Да-Нет"?
On 6 янв, 23:33, Sclex <scl...@gmail.com> wrote:
http://scripts.fictionbook.org/files2/Turn_off_'script_slows_down_IE'.rar
или
http://rghost.ru/3915570
Сообщите, сработало или нет. Информация про ключ реестра, изменяемый
этим reg-файлом, тут:
http://support.microsoft.com/kb/175500/ru
http://scripts.fictionbook.org/files2/Turn_off_'script_slows_down_IE'.rar
или
http://rghost.ru/3915570
Сообщите, сработало или нет. Подробности про ключ реестра, который
изменяется этим reg-файлом, тут:
http://support.microsoft.com/kb/175500/ru
Sclex:
А можно еще вопрос по регэкспам?
А то я уже всю голову сломала((((
Можно ли найти все трехбуквенные слова из согласных, кроме некоторых?
Типа кхм, ммм и т.д.? Как найти все - понимаю, а вот как исключить из
поиска несколько слов - никак не придумаю((((
On 12 янв, 21:26, Sclex <scl...@gmail.com> wrote:
> On 12 янв, 19:29, TaKir <epaper...@gmail.com> wrote:> Подскажи, плиз, можно ли как-то избежать сообщения о замедлении работы
> > ИЕ?
>
> Можно отключить это сообщение вообще. Для этого нужно импортировать в
> реестр reg-файл из архива:
>
> http://scripts.fictionbook.org/files2/Turn_off_'script_slows_down_IE'...
> илиhttp://rghost.ru/3915570
А можно еще вопрос по регэкспам?
А то я уже всю голову сломала((((
Можно ли найти все трехбуквенные слова из согласных, кроме некоторых?
Типа кхм, ммм и т.д.? Как найти все - понимаю, а вот как исключить из
поиска несколько слов - никак не придумаю((((
On 12 янв, 21:28, Sclex <scl...@gmail.com> wrote:
> > Подскажи, плиз, можно ли как-то избежать сообщения о замедлении работы
>
> ИЕ?
> Можно отключить это сообщение. Попробуйте импортировать reg-файл из
> архива:
>
> http://scripts.fictionbook.org/files2/Turn_off_'script_slows_down_IE'...
> илиhttp://rghost.ru/3915570
Скачать:
http://rghost.ru/3955874
или
http://scripts.fictionbook.org/files/SearchWithRegexpSet_v27.rar
Немного улучшил код, что, впрочем дало лишь незначительный прирост
скорости (выигрыш в три секунды из двадцати девяти).
Теперь у функций addRegExp и tagRegExp появился пятый параметр:
ограничение на длину строки, которую могут находить конструкции
просмотра назад, т.е. (?<= ...) и (?<! ... ). Установление ограничения
в пределе позволяет увеличить скорость работы скрипта в 2.5 раза. Если
регэксп использует для просмотра назад код (?<![а-яё]) , то пятый
параметр можно прописать равным единице, что обеспечит максимальную
скорость работы.
Больше серьезно увеличить скорость скрипта не получится, т.к. проверка
показала, что больше всего времени тратится на команду exec,
производящую собственно поиск. "Генеральная уборка" работает быстрее,
потому что она использует команду replace, которая одна выполняет
много замен, а команда exec вызывается для каждого одиночного поиска
отдельно. Обойтись без exec в "Поиске по набору", однако, невозможно.