В архиве рассылки можно ознакомиться с предыдущими выпусками.
Очередная статья, от Максима, посвященная на этот раз подстановочным знакам:
Здравствуйте, я снова с вами :)
Сегодня я хочу поговорить о подстановочных знаках. Мало кто знает, что это такое, хотя практически все пользовались функциями поиска или замены. А между тем подстановочные знаки значительно расширяют возможности этих функций.
Для начала чуть-чуть теории. Подстановочные знаки ведут свое начало от регулярных выражений (регэкспов), которые используются во многих языках программирования и текстовых редакторах как мощные средства работы со строками. К сожалению, в Word'е эта возможность реализована довольно-таки криво, и поэтому удобство использования этой опции оставляет желать лучшего, но все-таки иногда подстановочные знаки здорово помогают облегчить жизнь.
Подстановочные знаки - это специальные символы, которые указывают Word'у некоторые правила поиска. Например, поиск всех словоформ в Word'е реализован только для английского языка, а подстановочные знаки могут делать нечто похожее и для русского языка.
Проще всего можно понять сущность подстановочных знаков на примерах. Во встроенной справке Word'а примеры использования знаков указаны, но не всегда верно. Приведу цитаты из хелпа со своими комментариями:
Цитата:
"звездочка служит для замены строки знаков (по шаблону "к*й"будут найдены слова "круглый"и "квадратный")."
Не совсем верно. Поиск в данном случае осуществляется так: находится буква "к" и далее выделяется все до буквы "й" включительно. По команде "Найти снова" процесс повторяется сначала. То есть если в документе есть строка "сколько чайных чашек", то сначала выделится "колько чай", а затем "ко чай". Слова "круглый" и "квадратный" найдены будут, но помимо всего этого будет найдено дикое количество различного мусора, не имеющего отношения к делу.
Цитата:
"Любой знак
Введите ?.
Например, если ввести "г?д", то будут найдены слова "гад", "гид" и "год"."
Это один из немногих знаков, который работает именно так, как ему положено. Единственное замечание - при приведенном примере будут найдены так же слова "загадка", "погода" и прочие :(
Цитата:
"Начало слова
Введите <.
Например, если ввести "<(горо)", то будут найдены слова "город" и "гороскоп", а слово "огород" найдено не будет. Конец слова
Введите >.
Например, если ввести "(ор)>", то будут найдены слова "ор" и "упор", а слово "оратория" найдено не будет."
Очень полезные знаки. При их использовании можно весьма облегчить поиск. Например, применим их к предыдущему примеру. Введя в строку поиска "<г?д>", мы найдем именно то, что хотели - слова "гад", "гид" и "год". Введя "<год>", мы получим именно слово "год", а не "погода".
Цитата:
"Один из указанных знаков
Введите [ ].
Например, если ввести "кр[еа]н", то будут найдены слова "крен" и "кран"."
Не совсем понятно, в какой ситуации может пригодиться этот знак. Я, например, не сталкивался, хотя и допускаю, что в некоторых случаях он может принести пользу. Больше толку, мне кажется, от следующих знаков:
Цитата: Любой знак из указанного диапазона
"Введите [-].
Например, если ввести "[в-н]оль", то будут найдены слова "голь" и "ноль". Диапазон должен быть сформирован по возрастанию. Любой знак, кроме знаков, которые находятся в диапазоне, указанном в скобках
Введите [!x-z].
Например, если ввести "ко[!е-р]а", то будут найдены слова "кода" и "коса", а не слова "кожа" и "кора"."
Эти знаки я применяю для отсекания "лишних" вариантов написания слова.
Остальные знаки, на мой взгляд, особой практической ценности не имеют, если эта тема кого-то заинтересовала, пишите, я продолжу описание знаков в следующих статьях. А пока приведу пример практического применения подстановочных знаков.
Предположим, что в некоей конторе работают некая секретарша, которая удивительно рассеяна, но компенсирует это тем, что умеет быстро исправлять свои ошибки. Предположим далее, что ей необходимо распечатать докладную записку начальника отдела на своего сотрудника - Иванова. Начальник отдела отличается графоманскими склонностями :), записка получилась обширная, и по ней раскидана фамилия нерадивого работника в различных падежах, например "Иванову", "Иванова", "Ивановых" и т.д.; докладная записка напечатана, и
вдруг секретарша замечает, что по рассеянности перепутала фамилию работника и зовут его вовсе не Иванов, а Иваненко. Обычная функция замены "Иванов" на "Иваненко" не подходит, т.к. слово "Иванова" она заменит на "Иваненкоа" (кто не верит, попробуйте ;)). Но, поскольку наша секретарша хорошо знает возможности Word'а, она в диалоговом окне "Найти и заменить" жмет кнопку "Больше", ставит галочку "Подстановочные знаки" и забивает в строке "Найти" следующую конструкцию:"Иванов*>" . В результате легко и непринужденно
она получает нужный результат.
Как же работает эта конструкция? Звездочка обозначает любое количество любых знаков, а закрывающая угловая скобка - конец слова. В результате будут найдены и заменены все слова, начинающиеся с буквосочетания "Иванов", независимо от их окончания.
И в заключение: будьте бдительны! Когда в строке поиска вводите подстановочные знаки, вы должны хотя бы примерно представлять, что именно будет найдено с их помощью. Если бы у секретарши в документе стояли слова "Ивановский комбинат", они исправились бы на "Иваненко комбинат", что, как вы понимаете, не есть хорошо. В крупном документе сложно отследить все замены, которые производит Word, поэтому я бы не советовал на первых порах при работе с подстановочными знаками использовать кнопку "Заменить все".
Если у вас появились вопросы, или вы хотите предложить тему для статьи, пишите на makc_macros@bk.ru, при этом прошу придерживаться следующих правил:
1) В поле "Тема" обязательно укажите слово "макросы", остальные письма просто будут отсеиваться фильтром (это я так от спамеров защищаюсь:))
2) Размер письма не должен превышать 40 Кб.
Можно также писать в дискуссионный лист этой рассылки.
До свидания!
В заключение несколько организационных моментов.
Приношу извинения за недельное молчание - уезжал в Саратов на олимпиаду по MS Office среди студентов ССУЗ Приволжского федерального округа, вернулся с победой (так что можно поздравить). В середине апреля пройдёт Всероссийская олимпиада в Смоленске.
По ходу статьи, Максим ссылается на дискуссионный лист. Подписаться на него можно со страницы листа: http://subscribe.ru/catalog/comp.soft.others.tosch.flame
Сегодня начну отвечать на письма, которые накопились за неделю - не переживайте, отвечу по возможности всем.
На сегодня всё.
Спасибо за внимание!
Всем удачи!
Почта ведущего рассылки (с темой Word), если есть вопросы - пишите, так же направляйте свои отзывы. Форум, посвящённый MS Office и этой рассылке.