Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Регулярные выражения. 
Способы автоматизации верстки словаря

РефератПомощь в написанииУзнать стоимостьмоей работы

Любой символ. Как следует из названия этому шаблону соответствует любой символ (в обычном текстовом поиске для этого используется шаблон ^?). Символ этого шаблона — точка. Если указать точку в строке поиска и нажать «Find», то поочередно будут найдены все символы в тексте (за исключением символа нового абзаца). Шаблон любого символа можно использовать в сочетании с другими символами или… Читать ещё >

Регулярные выражения. Способы автоматизации верстки словаря (реферат, курсовая, диплом, контрольная)

Регулярные выражения (RegularExpression, или RegExp) имеют достаточно длинную историю (самые ранние практические применения еще в 70-х). Само название GREP произошло от набора команд g/re/p используемых в текстовом редакторе ed операционной системы UNIX. Этот набор команд осуществлял поиск по файлу строк соответствующих заданному регулярному выражению и выводил их на печать. Они особенно эффективны при выполнении поиска и замены.

К сожалению GREP пользуется дурной славой сложного инструмента, доступного только программистам. В действительности регулярные выражения — самый мощный, на сегодняшний день, способ поиска текстовых фрагментов в электронных документах.

Сейчас регулярные выражения используются многими текстовыми редакторами и утилитами для поиска и изменения текста на основе выбранных правил. Многие языки программирования уже поддерживают регулярные выражения для работы со строками. Однако, несмотря на сложность изучения всех аспектов использования регулярных выражений, многие задачи с которыми сталкиваются пользователи InDesign в реальной работе могут быть решены с использованием удивительно простых выражений.

В отличие от обычного поиска, где указывается конкретный текст, регулярные выражения позволяют обобщить условия поиска с помощью системы шаблонов. Шаблоны — это текстовые фрагменты, которые содержат как обычные символы, так и метасимволы, с помощью которых задаются специальные функции: альтернативные варианты поиска, условия повторений и пр. Понять, как работает система шаблонов вполне возможно, хотя иногда непросто, так как задачи бывают весьма заковыристые. Для полноценного описания работы шаблонов понадобится слишком много места, поэтому для всех интересующихся приведены ссылки в конце статьи. Здесь же мы разберём ряд задач, которые помогут понять работу системы шаблонов, а также пригодятся при работе с текстом в InDesign.

Самый простой способ познакомиться с регулярными выражениями, и убедиться в их превосходстве над обычным поиском по тексту — рассмотреть несколько примеров. Стандартный поиск по тексту в InDesign позволяет использовать четыре шаблона (^9 — для любой цифры, ^$ - для любой буквы, ^? — для любого символа иw — для любого пробела). Эти без сомнения полезные шаблоны, однако имеют ряд очевидных ограничений: используя эти шаблоны нельзя организовать поиск повторяющихся элементов (например, чтобы найти все числа в тексте придется последовательно перебирать сначала все числа из одной цифры, затем из двух, из трех и т. д.), так же шаблоны нельзя использовать в строке замены (можно использовать Рисунок9 для поиска последовательности состоящей из слова «Рисунок» и следующей за ним цифры, однако замена данной последовательности на что-либо приведет к потере цифры).При использовании же регулярных выражений, для замены всех слов «Рисунок» с последующей цифрой на слово «Фото» с сохранением цифры, достаточно в строке поиска указатьРисунок (d), а в строке замены Фото $ 1. Последовательность $ 1 в строке замены является указателем на результат поиска заключенный в скобки в строке поиска. Более общий случай данного примера, выглядит так: строка поиска: Рисунок (d+), строка замены: Фото $ 1, и позволяет найти и заменить все слова «Рисунок» с последующим целым числом (т.е. последовательностью из одной или более цифр) на слово «Фото» с сохранением следующего числа. Еще один пример использования регулярных выражений для поиска последовательности символов. Довольно часто возникает задача поиска последовательности из прописных букв и применения к ней символьного стиля (обычно smallcaps для создания капителей). Эта задача так же имеет очень простое решение при использовании GREP. Строка поиска: uu+, строку замены в данном случае нужно оставить пустой (так как менять мы будем только форматирование), а в поле ChangeFormat нужно указать символьный стиль который мы хотим применить к результату поиска. Метасимвол u в данном примере обозначает все прописные буквы, знак + как и предыдущем примере означает (один или несколько), таким образом наш поисковый запрос найдет последовательность минимум из двух прописных букв. Другая сильная сторона GREP — использование альтернатив. Например чтобы найти слова «слон» и «клон» можно использовать выражение (с|к)лон. Расширенная версия данного выражения — (с|к)лоны? может быть использована для поиска формы множественного числа (в результате будут найдены слова «слон», «клон», «слоны», «клоны»). Знак вопроса в данном выражении означает, что буква «ы» может присутствовать на конце слова, а может и отсутствовать. Еще один пример простого, но одновременно мощного выраженияд[аоуеиыэюя]м. Данное выражение соответствует такой последовательности: буква «д», затем гласная, затем буква «м». Эта последовательность может быть как отдельным словом (дом, дым), так и встречаться внутри более длинного слова (задуматься, дымиться). В дальнейшем мы рассмотрим как осуществлять поиск только по словам целиком. Этот пример так же демонстрирует как определить свои собственные шаблоны, в данном случае шаблон для гласных букв.

В качестве последнего примера используем задачу которая может встретиться в реальной работе. По условию задачи у нас есть список контактов, в которых среди прочей информации указан адрес электронной почты. Наша задача добавить слово «E-mail:» перед каждым адресом. Убедимся что знак «@» в тексте больше нигде не встречается, т. е. если строка содержит знак «@», то эта строка является адресом электронной почты. Теперь нам осталось записать выражение которое означает «если строка содержит знак «@», добавить в начале слово «E-mail». Данное выражение записывается следующим образом ^(.+@). В поле замены указываем слово «E-mail» за которым следует результат поиска по выражению заключенному в скобки (который в каждом случае является текстом между началом абзаца и символом «@»).

В компьютерном жаргоне «wildcards» означает символ используемый для замещения одного или нескольких других символов. Русская локализация InDesignпредлагает нам вариант перевода — «подстановочные символы». Я буду использовать термин «шаблон» так как он отражает смысл в большей степени. Шаблоны (Wildcards) — одна из основных функций GREP. Большинство из них перечислены в пункте Wildcards выпадающего меню рядом со строкой поиска. Остальные находятся в двух пунктах меню: QuotationMarks и Posix. Наконец, свои собственные шаблоны можно создавать через определение символьных классов.

Регулярные выражения. Способы автоматизации верстки словаря.

Рисунок Рассмотрим какие шаблоны и как мы можем использовать:

  • — Любой символ. Как следует из названия этому шаблону соответствует любой символ (в обычном текстовом поиске для этого используется шаблон ^?). Символ этого шаблона — точка. Если указать точку в строке поиска и нажать «Find», то поочередно будут найдены все символы в тексте (за исключением символа нового абзаца). Шаблон любого символа можно использовать в сочетании с другими символами или шаблонами. Например, результатом поискового запроса «д.а» будут все слова из четырех букв начинающиеся на д и оканчивающиеся на а.
  • — Любая заглавная буква. Шаблон u позволяет найти в тексте заглавные буквы. То есть все символы Unicode которые могут быть интерпретированы как заглавные буквы, такие как заглавные буквы латинского алфавита, заглавные буквы кириллического алфавита, иврита, а также арабские. Пример — uu+ для поиска аббревиатур. Данный запрос читается следующим образом: «найти заглавную букву (u) плюс еще хотябы одну следующую за ней заглавную букву» (оператор повторения + будет рассмотрен позже).Точка и обратный слэш. Точка в GREP является шаблоном любого символа. А что если нам нужно найти точку в тексте, или символ обратного слэша? Для этого в поисковом запросе используется «экранирование» символом обратного слэша (). Поисковый запрос для точки выглядит следующим образом — .
  • — Любая строчная буква. Для поиска строчных букв используется шаблон l (строчная L). Как и в случае заглавных букв, результатом поиска буду все символы Unicode, которые можно интерпретировать как строчные буквы. Например, результатом поискового запросаul+ будут все слова начинающиеся с заглавной буквы.
  • — Любая буква. Находит любую букву, не делая различий между строчными и прописными. [lu] на самом деле не шаблон, а символьный класс объединяющий два шаблона l и u. Но о символьных классах позже.
  • — Любая цифра. d — шаблон для поиска цифр от 0 до 9. В сочетании с оператором повторения (d+) позволяет найти все числа в тексте. Так же этому шаблону соответствуют все стилистически измененные цифры: степени, числители и знаменатели, а также дроби, созданные функцией Fraction из панели Character. Дроби введенные с использованием значения Unicode (например ј - 00BC) этому шаблону не соответствуют (они соответствуют только шаблону «любой символ»).

Создание стилей GREPпредставляет собой усовершенствованную технику поиска, основанную на принципе шаблонов. Стили GREP можно использовать для применения стиля символа к тексту, удовлетворяющему указанному выражению GREP. Например, может потребоваться применить определенный стиль символа ко всем номерам телефонов в тексте. При создании стиля GREP следует выбрать стиль символа и определить выражение GREP. Весь текст в абзаце, удовлетворяющий выражению GREP, будет отформатирован в соответствии с выбранным стилем символа.

Регулярные выражения. Способы автоматизации верстки словаря.

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

Показать весь текст
Заполнить форму текущей работой