Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
BanderLog Гость
|
Добавлено: Чт Май 05, 2005 0:42 Заголовок сообщения: Регулярные выражения в anyFB2 |
|
|
В общем хотелось бы про сабж больше узнать. Какие правила их написания. Хотелось бы полную справочную инфу. Желательно с примерчиками. |
|
Вернуться к началу |
|
|
kot73 Гость
|
Добавлено: Чт Май 05, 2005 9:16 Заголовок сообщения: |
|
|
Могу кинуть файл справки от ClearTXT - там в разделе ФАК есть глава про регэкспы. Очень толково написано, с примерами. |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Чт Май 05, 2005 9:19 Заголовок сообщения: |
|
|
kot73 писал(а): | Могу кинуть файл справки от ClearTXT - там в разделе ФАК есть глава про регэкспы. Очень толково написано, с примерами. |
Кинь мне, плз. 4pi-at-bk.ru |
|
Вернуться к началу |
|
|
kot73 Гость
|
Добавлено: Чт Май 05, 2005 9:47 Заголовок сообщения: |
|
|
Stranger
Кинул.
Короче, я уже засел за чтение документации по WiKi. Планирую туда добавить раздел по использованию регэкспов для подготовки книг (общее описание, примеры из опыта GribUser'a - он сильно мне помог разобраться в этой материи еще когда я в ClearTXT книжки делал, все из моего - особенно по правке уже готового fb2 документа). Вот.
Ибо уже обещал, в частности для LX. Но не сразу вдруг, так как там это все надо упорядочить, добавить подробное описание для каждого примера. |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Чт Май 05, 2005 10:54 Заголовок сообщения: |
|
|
kot73
Может быть закинешь для начала прямо сюда несколько примеров использования (самых типовых). Я сам пользуюсь регэкспами, но не особенно их люблю (т.к. плохо знаю, предпочитаю вордовские wildcards), вполне возможно, что несколько насущных примеров смогут изменить отношение к регэкспам в лучшую сторону. В любом случае было бы любопытно посмотреть кто и что ими делает.
Posted after 26 minutes 29 seconds:
В данный момент, в частности, мучает вот такая задача - как поменять две заглавные буквы с точками и пробелом в начале строки на их же, только выделенные жирным шрифтом и без пробела? Буквы все разные - А.Б., В.Г., Д.Е. и т.п. Возможно это?
А. Б. --> А.Б. |
|
Вернуться к началу |
|
|
0ff Автор программы doc2fb
Зарегистрирован: 30.09.2004 Сообщения: 202
|
Добавлено: Чт Май 05, 2005 21:08 Заголовок сообщения: |
|
|
Stranger
В ворде. ctrl+h
искать: пробел([А-Я].[А-Я].)
заменить на: \1
Кликни в поле заменить на потом в самом низу диалога на кнопку формат. Выбери template (образец) -> жирный. Все, заменяй.
http://word.mvps.org/FAQs/General/UsingWildcards.htm _________________ doc2fb |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Чт Май 05, 2005 22:41 Заголовок сообщения: |
|
|
0ff писал(а): | В ворде. ctrl+h |
В Ворде я знаю, спасибо. Мне надо в FB Tools. Проблема в том и заключается, что doc2fb не берёт жирное выделение перекинутого в Ворд html-файла (курсив при этом конвертирует нормально). Вот образец, если интересно. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Чт Май 05, 2005 23:47 Заголовок сообщения: |
|
|
искать:
\A([А-Я])\. ?([А-Я])\.
либо
^([А-Я])\. ?([А-Я])\.
Менять:
<strong>\1.\2.<strong>
либо
<strong>$1.$2.<strong>
в исходнике, ессно. Там в исходнике регэкспы малость косые, но что-то из этого точно сработает |
|
Вернуться к началу |
|
|
BanderLog Гость
|
Добавлено: Пт Май 06, 2005 0:25 Заголовок сообщения: |
|
|
kot73 писал(а): | Могу кинуть файл справки от ClearTXT - там в разделе ФАК есть глава про регэкспы. Очень толково написано, с примерами. |
Был бы очень благодарен. Можно было бы еще выложить куда-нибудь или кинуть ссылкой.
Добавлено спустя 1 минуту 35 секунд:
Блин забыл мыло положить
banderlog@bk.ru |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 6:59 Заголовок сообщения: |
|
|
GribUser писал(а): | искать:
\A([А-Я])\. ?([А-Я])\.
либо
^([А-Я])\. ?([А-Я])\.
Менять:
<strong>\1.\2.<strong>
либо
<strong>$1.$2.<strong>
в исходнике, ессно. Там в исходнике регэкспы малость косые, но что-то из этого точно сработает |
Не, не работает. В исходнике вообще ничего не ищет из приведённых примеров.
А то, что регэкспы косые - это для меня новость, многое, впрочем, объясняющая. Я уж начал было думать, что с регэкспами вообще нереально разобраться. |
|
Вернуться к началу |
|
|
kot73 Гость
|
Добавлено: Пт Май 06, 2005 10:02 Заголовок сообщения: |
|
|
Stranger
Попробуй в каком-ть текстовом редакторе, который с регэкспами работает. Только обрати внимание, на то, чтобы он умел работать с найденными подвыражениями (ссылаться на них) при замене. В свое время я много редакторов посмотрел, но не многие это умеют, хотя и заявляют о поддержке регэкспов.
Я в EditPad Pro все делаю. А FBE как-то криво с регэкспами работает - я там кроме ручной правки ничего не делаю.
Маленькая поправка к Димину примеру;)
1. Он забыл закрыть тег strong в регэкспе замены.
2. В регэкспе поиска можно добавить модификатор включения регистрозависимости (либо он будет включаться в редакторе чекбоксом), т.к. в моей практике далеко не всегда регистрозависимоть включена по умолчанию. Хотя в данном конкретном примере можно и невключать, т.к. указан диапазон только прописных букв.
ЗЫ
А EditPad Pro всяко рекомендую, у него syntax coloring для xml имеется (и не только), свой character map - удобный очень, ну и т.д. Короче самый продвинутый и быстрый текстовый редактор, который я пока встречал.
Вот здесь триалку можно качнуть, ознакомиться:
http://www.editpadpro.com/
И кстати там модификаторами рулят чекбоксы, что ИМХО удобнее.
Добавлено спустя 43 минуты 30 секунд:
Причесывалка библиотеки
Для всех текстов:
/\A\s+// - удаление пробельных символов в начале текста
/\s+\Z// - удаление пробельных символов в конце текста
/(\s)\s+/$1/g - удаляет лишние пробельные символы в начале строк - оставляет только один
/([pv])>\s+/$1>/g - удаляет пробельные символы после открывающих тегов <p> и <v>
/[\x2D\x97\x96]{2,}/\x96/g - находит сдвоенные тире и дефисы, заменяет их на одно короткое тире
/(p[^>]*>)[\x2D\x97]/$1\x96/g - заменяет в диалогах тире и дефисы на короткое тире
/(p[^>]*>)\x96 /$1\x96\xA0/g - заменяет в диалогах пробел после тире на неразрывный, фиксированной ширины
/[\x2D\x97](\s)/\x96$1/g - заменяет в тексте тире и дефисы на короткое тире
/<\/p>/<\/p>\n/g - вставляет символ новой строки после закрывающего тега </p>
Для русских текстов:
/>([^>]*?([\(\s"]))?"([^\"<]+?)([^\s"\(<])"/>$1«$3$4»/g - заменяет в тексте прямые кавычки на кавычки-елочки (replace all повторить многократно)
/>([^>]*?)«([^»<]*?)«([^»<]*?)»/>$1«$2„$3“/g - заменяет в тексте вложенные кавычки-елочки на косые кавычки?
/([\.,!\?;]) \x96/$1\xA0\x96/g - заменяет пробел после знака препинания, перед тире, на неразрывный пробел
Для всех текстов:
/\x96/\x97/g - заменяет в тексте все короткие тире на длинные
Пояснения:
Шестнадцатиречные коды символов (представляются с помощью \xNN):
2D - минус (дефис)
96 - короткое тире
97 - длинное тире
A0 - неразрывный пробел фиксированной ширины
Формат регэкспов:
Слэшами обозначены начало и конец регэкспа, т.е.
/регэксп_поиска/регэксп_замены/модификатор
пример:
/(\s)\s+/$1/g
Модификаторы:
g - включает/выключает "жадность"
s - . будет совпадать с символами перевода строки
i - переключение регистронезависимости
Замена отдельных символов - вот эту штуку можно (лучше?) делать до подсовывания текстового файла AnyToFB2, т.к. она их режет, считая что это признаки хтмл форматирования (это не всегда так). Это присутствует в скрипте причесывалки либы, но я честно говоря не совсем понимаю, зачем - может Дима откомментирует.
/&/&/gs
/</</gs
/>/>/gs
/"/"/gs
/'/'/gs
Еще в причесывалке есть скрипты на проверку всяких соответствий схеме, оформления ссылок и т.д. - это регэкспами описать можно, но геморно и не нужно, т.к. валидатор с этим прекрасно справляется.
Позжее выложу мои регэкспы, и, может, кое-чего из ClearTXT. |
|
Вернуться к началу |
|
|
0ff Автор программы doc2fb
Зарегистрирован: 30.09.2004 Сообщения: 202
|
Добавлено: Пт Май 06, 2005 12:20 Заголовок сообщения: |
|
|
Stranger
Выложи пожалуйста еще раз пример, ссылка не работает. _________________ doc2fb |
|
Вернуться к началу |
|
|
Stranger Модератор
Зарегистрирован: 29.10.2004 Сообщения: 1479 Откуда: Москва
|
Добавлено: Пт Май 06, 2005 12:42 Заголовок сообщения: |
|
|
Пожалуйста
Posted after 26 minutes 3 seconds:
kot73 писал(а): | А EditPad Pro всяко рекомендую |
А украсть его где-нибудь можно? Желательно полнофункциональный
Posted after 39 minutes 28 seconds:
Вопрос снимается, нашел. |
|
Вернуться к началу |
|
|
0ff Автор программы doc2fb
Зарегистрирован: 30.09.2004 Сообщения: 202
|
Добавлено: Пт Май 06, 2005 14:50 Заголовок сообщения: |
|
|
Stranger
А, есть такая беда. Кликни на одной "жирной" букве правой клавишей -> выделить весть текст с подобным форматированием. Выбери стандартное форматирование и потом жми на [F], чтоб сделать текст жирным.
В чем проблема: В ворде можно стили наследовать. Ограничений в "дедушках" не существует, поэтому насоздавать их можно огромную кучу. В WordML это наследие выглядит очень сложно.. очень, очень сложно. Ковыряться в этом еще сложнее, поэтому жирный и курсив не всегда переноситься из стилей. _________________ doc2fb |
|
Вернуться к началу |
|
|
|