}
Как выполняется операция поиска/замены в самой последней версии, показано в листинге 7.4.
Листинг 7.4. Поиск и замена в InDesign CS3
// Сброс параметров - неизменная операция арр.findTextPreferences = NothingEnum.nothing; app.changeTextPreferences = NothingEnum.nothing;
// Установка опций поиска with (app.findChangeTextOptions) caseSensitive = false; includeFootnotes = false; includeHiddenLayers = false; includeLockedLayersForFind = false; includeLockedstoriesForFind = false; includeMasterPages = false; wholeWord = false;
>
app.findTextPreferences.pointSize = 24; app.changeTextPreferences.pointSize = 10;
app.activeDocument.changeText() ;
7.2.1. Синтаксис регулярных выражений, используемых в InDesign CS3
Регулярные выражения - выражения, предназначенные для поиска текста по нечетким признакам: фактически вы указываете шаблон, который задает лишь минимальные условия для соответствия, а общее количество вариантов, построенных на базе шаблона, может быть огромным. С подобным подходом сталкиваются при поиске файлов в Windows: например, test?.* означает поиск файлов с любым расширением, у которых имя начинается с test; *.txt приводит к поиску любых файлов с расширением txt и т. д.
Термин "регулярное выражение" является общим названием подхода к поиску файлов, при этом конкретная реализация механизма поиска по маске в разных приложениях имеет отличия, порой достаточно существенные, что хорошо видно при сравнении JavaScript, Visual Basic for Applications и InDesign. Часто регулярные выражения сокращенно называют RegEx (от англ. Regular Expression), еще одно обозначение - GREP.
Вот, например, какой вид будет иметь в InDesign выражение для поиска адресов электронной почты:
app.findGrepPreferences.findWhat = " (?i) [A-Z]*?@[A-Z]; Несколько непривычно, не так ли? Тем не менее эта конструкция работает, мало того - она без проблем найдет ЛЮБОЙ адрес почты, что при использовании обычных инструментов InDesign можно только мечтать.
Как вы уже, наверное, догадались, регулярные выражения являются отдельным объектом в InDesign, со своими свойствами и методами. Соответственно, использование их подчиняется общим правилам работы с объектами.
Пример использования объекта findGrepPreferences представлен в листинге 7.5.
; Листинг 7.5. Использование объекта findGrepPreferences
app.findGrepPreferences = NothingEnum.nothing; app.changeGrepPreferences = NothingEnum.nothing; with (app.findChangeGrepOptions)
{
includeFootnotes = false; includeHiddenLayers = false;
includeLockedLayersForFind = false; includeLockedStoriesForFind = false; includeMasterPages = false;
}
Если вы используете регулярные выражения, опции для поиска форматированного текста нужно задавать для объекта findGrepPreferences: арр.findGrepPreferences.pointSize = 24; арр.changeGrepPreferences.underline = true; Операция замены производится похожим методом: арр.activeDocument.changeGrep(); При использовании регулярних выражений опции поиска слова целиком (wholeWord) и учета регистра (casesensitive) недоступны, поскольку такие возможности предусмотрены в синтаксисе регулярних выражений (табл. 7.1).