Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 15:06 Заголовок сообщения: |
|
|
0ff писал(а): | А, есть такая беда. Кликни на одной "жирной" букве правой клавишей -> выделить весть текст с подобным форматированием. Выбери стандартное форматирование и потом жми на [F], чтоб сделать текст жирным. |
Вот, блин, а я мучался. Спасибо большое! Век живи - век учись. |
|
Вернуться к началу |
|
|
kot73 Гость
|
Добавлено: Пт Май 06, 2005 15:20 Заголовок сообщения: |
|
|
Продолжение (мои регэкспы)...
Редактирование готовой книги (fb2 файла)
Замена прямых кавычек на "елочки" - хуже того варианта, что работает в причесывалке либы, т.к. ориентирован только на русские тексты. Иначе заменит прямые кавычки внутри тегов.
Find: /"([А-я])/
Replace ALL: /«\1/
Find: /([А-я?!;:.,…)])"/
Replace ALL: /\1»/
Вместо вложения ([А-я]) можно использовать (\w+) - что позволяет работать с любым тексом, но только на этапе его подготовки к конвертации в fb2 - из-за указанного выше недостатка.
Удаление переносов - часто встречается тексты, содержащие их:
воз- можность удалить все переносы
Find: /(\w+)[\x2D\x97\x96] /
Replace ALL: /\1/
Оговорка:
Удалит дефисы из таких обротов, когда идет перечисление составных слов:
я вам пишу супер- и мегатексты
А также ошибки в написании тире:
правка текста- это хорошо
Поэтому я пользуюсь кнопкой Replace&SearchNext, чтобы в таком случае вручную поправить и нажать SearchNext.
Вставка пропущенного после тире пробела :
Find: / [\x2D\x97\x96](\w+)/
Replace ALL: / \х96 \1/
Возможна ситуация, когда допущена следующая ошибка:
правка текста чего -то плоха
Тогда этот регэксп не исправит ошибку, а заменит на другую. Поэтому я пользуюсь кнопкой Replace&SearchNext, чтобы в таком случае вручную поправить и нажать SearchNext
Удаление пробела перед знаками препинания и скобками:
Find: / ([.,;:!?…)])/
Replace ALL: /\1/
Вставка пропущенного пробела после знаков препинания, перед тире:
Find: /([,.;:!?…])[\x2D\x97\x96] /
Replace ALL: /\1 \х96 /
Замена трех точек на символ троеточия:
Find: /\.{3}/
Replace ALL: /…/
Замена неправильно поставленых кавычек (AnyToFB2 неправильно расставляет кавычки-елочки в случае если закавыченная фраза начинается с троеточия, по крайней мере раньше).
Find: / »…/
Replace ALL: / «…/
Замена заголовков, содержащих *** на subtitle (намного быстрее, чем вручную в FBE ). Вставляемый тег пустой строки можно и убрать - кому как нравится.
Find: /</section>[^<]*<section>[^<]*<title>[^<]*<p>(\*+)</p>[^<]*</title>/
Replace ALL: /<empty-line/><subtitle>\1</subtitle><empty-line/>/
Удаление лишних тегов, на примере курсива (AnyToFB2 лепит их как то странно, если текст до конвертации отбивается подчеркиванием)
Find: /<emphasis>(.+?)</emphasis>(.+?)<emphasis>(.{1,2})</emphasis>/
Replace ALL: /<emphasis>\1\2\3</emphasis>/
Т.е. было:
<p><emphasis>правка</emphasis> текст<emphasis>а</emphasis> - это хорошо</p>
Станет:
<p><emphasis>правка текста</emphasis> - это хорошо</p>
Этот регэкпс я сейчас использую редко, но его можно всячески модифицировать под конкретную ситуацию
Соединение разорванных предложений:
Find: /([\w+,;\x2D\x97\x96 ])</p>(\r\n)\s*?<p>/
Replace: /\1 /
Пользуюсь кнопкой Replace&SearchNext, чтобы контролировать каждое исправление.
Вставка пропущенного пробела после знаков препинания и скобок:
Find: /([\w+\x2D\x97\x96"»][.,;:!?()])([\w+\x2D\x97\x96])/
Replace: /\1 \2/
Этот регэксп поймает такие слова как т.е., т.д., И.О., а также l:href - туда вставлять пробелы не нужно. Поэтому пользуюсь кнопкой Replace&SearchNext, чтобы контролировать каждое исправление.
Чтобы он не ловил И.О. нужно включить регистрозависимость и вместо [\w+] использовать [а-я] (или [a-z] - во всех случаях, когда редактируется англйский текст, я этого дальше повторять не буду)
Поиск неправильного сочетания знаков препинания и скобок:
Find: /[.,;:!?(…][,;:]/
Далее, править руками по ситуации.
Поиск предложений, начинающихся с маленкой буквы - обязательно включить регистрозависимый режим:
Find: /([А-Яа-я][.?!] )[а-я]/
Далее, править руками по ситуации. Ловит варианты текста, которые надо оставлять как есть (когда это нужно):
Править текст? будешь? не будешь!
Поиск диалогов, начинающихся с маленкой буквы - обязательно включить регистрозависимый режим:
Find: /<p>[\x2D\x97\x96][ \xA0][а-я]/
Далее, править руками по ситуации.
Поиск строк, начинающихся с маленкой буквы - обязательно включить регистрозависимый режим:
Find: /<p>[а-я]/
Далее, править руками по ситуации.
Замена обычного пробела на пробел фиксированной ширины после тире, замена тире и дефисов на длинное тире (в диалогах) - это другой вариант регэкспов, которые в либе это делают:
Find: /<p>[\x2D\x97\x96][ \xA0]/
Replace ALL: /<p>\x97\xA0/
Замена пробела фиксированной ширины на обычный после тире, замена короткого тире и дефисов на длинное тире (в обычных предложениях):
Find: / [\x2D\x97\x96][ \xA0]/
Replace ALL: / \x97 /
Алгоритм правки часто встречающегося формата ссылок на валидный для бибилотеки (надо смотреть по ситуации, бывает другое оформление):
Step 1
Find: /<a l:href="#N(\d+)" type="note"/
Replace ALL: /<a l:href="#FbAutId_\1" type="note"/
Step 2
Find: /(<empty-line/>|<section>)?\r\n\s*<subtitle id="N(\d+)">(\d+)</subtitle>/
Replace ALL: /</section>\r\n<section id="FbAutId_\2">\r\n<title>\r\n<p>Note\3</p>\r\n</title>/
(не забыть удалить <empty-line/> в конце раздела ссылок)
Step 3
Find: /<body name="footnotes">\r\n\s*</section>/
Replace: /<body name="notes">/
Забыл упомянуть:
Порядок прогона текста через регэкспы важен - уменьшает кол-во ручной работы и пропущенных ошибок. Это касается и моих и библиотечных регэкспов. Порядок - тот, в каком я их написал. |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 15:28 Заголовок сообщения: |
|
|
Что касается замены прямых кавычек на «ёлочки», то есть рецепт (от GribUser'a) для FB Tools, привожу на случай, если кто не знает:
\s"(\S) --> ' «$1'
(\S)"\s --> '$1» '
^" --> «
"$ --> »
Применяется без апострофов (даны чтобы показать пробел). |
|
Вернуться к началу |
|
|
kot73 Гость
|
Добавлено: Пт Май 06, 2005 15:45 Заголовок сообщения: |
|
|
Stranger
Угу, только в FBE в режиме просмотра, а не исходника. EditPad Pro работает в режиме исходника, поэтому там это тоже не прокатит. Есть риск замены прямых кавычек внутри тегов.
А так, да, самый правильный регэксп для этого.
Но пропустит прямые кавычки, отбитые с двух сторон пробелами. Это надо иметь ввиду и проверять. |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 15:48 Заголовок сообщения: |
|
|
kot73 писал(а): | Но пропустит прямые кавычки, отбитые с двух сторон пробелами. Это надо иметь ввиду и проверять. |
Не только пробелами, но и "непробелами", <-- типа вот этой последней кавычки. Но на практике таких мало остается, правится ручками в течение одной минуты. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 16:06 Заголовок сообщения: |
|
|
Кусок из моей причесывалки
Код: | if ($BookLang eq 'ru'){
while ($XMLBody=~s/>([^>]*?([\(\s"]))?"([^\"<]+?)([^\s"\(<])"/>$1«$3$4»/g){}
while ($XMLBody=~s/>([^>]*?)«([^»<]*?)«([^»<]*?)»/>$1«$2„$3“/g){};
print "step 11\n";
$XMLBody=~s/([\.,!\?;]) –/$1\ –/g;
}
|
|
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 16:10 Заголовок сообщения: |
|
|
GribUser писал(а): | Кусок из моей причесывалки |
Для английских текстов планируется причесывалка? |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 22:40 Заголовок сообщения: |
|
|
Stranger писал(а): | Для английских текстов планируется причесывалка? | Я ихних правил не знаю, чего не знаю, туда не лезу. Хотя, я так понимаю, там всего-то разницы елочки на двойные лапки сменить а вложенные лапки на одинарные поменять. |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Сб Май 07, 2005 10:38 Заголовок сообщения: |
|
|
GribUser писал(а): | ихних правил не знаю, чего не знаю, туда не лезу. |
Да ладно тебе скромничать! Всё ты знаешь, просто сознательно саботируешь
Сюда ходи. |
|
Вернуться к началу |
|
|
Zenzen Зрелый участник форума
Зарегистрирован: 14.10.2004 Сообщения: 143 Откуда: Токио
|
Добавлено: Сб Янв 21, 2006 13:49 Заголовок сообщения: |
|
|
Гуру регулярных выражений, подскажите, пожалуйста, как в FBE можно найти все места, где кавычки-елочки встречаются уже внутри текста, оформленного теми же елочками, и заменить их на лапки.
Т.е.
«Тили-тили «трали-вали» это мы не проходили».
нужно заменить на
«Тили-тили „трали-вали“ это мы не проходили».
Не обязательно мудрить с заменой, хотя бы найти все места, с текстом между двумя '«', где нет закрывающей '»'. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Сб Янв 21, 2006 14:05 Заголовок сообщения: |
|
|
А это оно и было сверху (в исходнике делать):
Поиск
>([^>]*?)«([^»<]*?)«([^»<]*?)»
замена
>\1«\2„\3“
все приведет в порядок. Но для русских тектов либа это сама далеат, как я уже писал. |
|
Вернуться к началу |
|
|
Zenzen Зрелый участник форума
Зарегистрирован: 14.10.2004 Сообщения: 143 Откуда: Токио
|
Добавлено: Сб Янв 21, 2006 14:26 Заголовок сообщения: |
|
|
GribUser
Во! Спасибо!
Либа - Либой, а мы сами тоже хотим... |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|