Информационный портал
pocket versionPOCKET  wikiWIKI  FAQFAQ  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ПрофильПрофиль  Войти и проверить личные сообщенияВойти и проверить личные сообщения  ВходВход

Регулярные выражения в anyFB2
На страницу 1, 2  След.
 
Найти сообщения без ответов
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> Сделано для FB
Предыдущая тема :: Следующая тема  
Автор Сообщение


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

Автор программы 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

Автор формата FB2 - Автор библиотеки FB

Зарегистрирован: 30.09.2004
Сообщения: 2475
Откуда: Москва

СообщениеДобавлено: Чт Май 05, 2005 23:47    Заголовок сообщения: Ответить с цитатой

искать:
\A([А-Я])\. ?([А-Я])\.
либо
^([А-Я])\. ?([А-Я])\.

Менять:
<strong>\1.\2.<strong>
либо
<strong>$1.$2.<strong>

в исходнике, ессно. Там в исходнике регэкспы малость косые, но что-то из этого точно сработает
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора


BanderLog
Гость





СообщениеДобавлено: Пт Май 06, 2005 0:25    Заголовок сообщения: Ответить с цитатой

kot73 писал(а):
Могу кинуть файл справки от ClearTXT - там в разделе ФАК есть глава про регэкспы. Очень толково написано, с примерами.


Был бы очень благодарен. Можно было бы еще выложить куда-нибудь или кинуть ссылкой.

Добавлено спустя 1 минуту 35 секунд:

Блин забыл мыло положить Embarassed

banderlog@bk.ru
Вернуться к началу


GribUser
Автор формата FB2 - Автор библиотеки FB

Автор формата FB2 - Автор библиотеки FB

Зарегистрирован: 30.09.2004
Сообщения: 2475
Откуда: Москва

СообщениеДобавлено: Пт Май 06, 2005 1:12    Заголовок сообщения: Ответить с цитатой

http://www.gribuser.ru/cgi/getfile.pl?filename=cleartxt&filetype=zip

Там в прогу встроен вполне вменяемый тестировщих регэкспов которым я в итоге и пользуюсь по жизини, два окошка, в одном исходник, в другом - результат. Просто и со вкусом. И справочка очень душевная.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора


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, т.к. она их режет, считая что это признаки хтмл форматирования (это не всегда так). Это присутствует в скрипте причесывалки либы, но я честно говоря не совсем понимаю, зачем - может Дима откомментирует.
/&/&amp;/gs
/</&lt;/gs
/>/&gt;/gs
/"/&quot;/gs
/'/&apos;/gs

Еще в причесывалке есть скрипты на проверку всяких соответствий схеме, оформления ссылок и т.д. - это регэкспами описать можно, но геморно и не нужно, т.к. валидатор с этим прекрасно справляется.

Позжее выложу мои регэкспы, и, может, кое-чего из ClearTXT.
Вернуться к началу


0ff
Автор программы doc2fb

Автор программы 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 всяко рекомендую

А украсть его где-нибудь можно? Желательно полнофункциональный Cool

Posted after 39 minutes 28 seconds:

Вопрос снимается, нашел.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


0ff
Автор программы doc2fb

Автор программы doc2fb

Зарегистрирован: 30.09.2004
Сообщения: 202

СообщениеДобавлено: Пт Май 06, 2005 14:50    Заголовок сообщения: Ответить с цитатой

Stranger
А, есть такая беда. Кликни на одной "жирной" букве правой клавишей -> выделить весть текст с подобным форматированием. Выбери стандартное форматирование и потом жми на [F], чтоб сделать текст жирным.

В чем проблема: В ворде можно стили наследовать. Ограничений в "дедушках" не существует, поэтому насоздавать их можно огромную кучу. В WordML это наследие выглядит очень сложно.. очень, очень сложно. Ковыряться в этом еще сложнее, поэтому жирный и курсив не всегда переноситься из стилей.
_________________
doc2fb
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> Сделано для FB Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group