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

Подстановочные знаки

Разделы сайта:

Думаю, все из вас хоть когда-нибудь использовали программу Microsoft Word. И, наверное, все пользовались в Ворде поиском или заменой. А вот про то, что замены бывают очень сложные, что при помощи замены можно производить необычные операции, знает далеко не каждый.

Даже в обычном режиме замены позволяют делать хитрые операции. Но вот если включить режим "подстановочные знаки" (перевод английского "wildards"), то можно творить чудеса. Об этом мы и поговорим в этой статье. Кстати, если интересуетесь, то эти самые "wildcards" очень близки к так называемым "регулярным выражениям" ("regular expressions"), используемых при поиске и замене во многих программах для автоматической обработки текста.

Давайте решим несколько задач, которые могут потребоваться, например, при составлении указателя.

Оставить на странице только слова, начинающиеся с больших букв.

Word wildcards

Открываем окно поиска и замены, выставляем режим "подстановочные знаки" и делаем замену строки <[а-я]*> на ничто (оставляем поле "заменить на" пустым). Это в случае русского текста, в случае английского пойдет <[a-z]*>. Эта замена удаляет все слова, начинающиеся с маленькой буквы.

Объясню принцип работы этой команды. В режиме подстановочных знаков < обозначает начало слова, что-либо, написанное в квадратных скобках - это выражение на выбор. В данном случае на выбор предлагается интервал букв от маленькой а по маленькую я - всевозможные маленькие буквы. Символ звездочки обозначает сколько угодно каких угодно символов, с правая угловая скобка - конец слова. Тем самым, в поиске мы ищем, чтобы в начале слова была маленькая буква, потом сколько угодно чего угодно, и так по конец слова. Поскольку Word использует "нежадную" систему поиска, он подберет ближайший конец слова.

Сделать новые строки после слов, начинающиеся с больших букв.

Искать слова с больших букв мы уже умеем, осталось разобраться с заменой. Нам здесь понадобится возможность заменять изначальный текст на как-либо измененный. Итак, заменяем <[А-Я]*> (здесь мы ищем слова, начинающиеся с больших букв) на \&^13.

В данном случае выражение \& означает "искомый текст" - то выражение, которое вы нашли. А ^13 - это просто знак новой строки.

Но есть еще один способ сделать эту замену, опишем его сейчас, поскольку более сложные варианты этого метода нам потребуются ниже. Замените (<[А-Я]*>) на \1^13. Результат будет тот же самый.

Поясню, как это работает. Выражение в поиске может содержать несколько наборов круглых скобок, в данном случае один. Сами круглые скобки никак не влияют на поиск, ищет Word то же выражение, как если бы этих скобок не было. А вот все, что находится в скобках, нумеруется. В данном случае у нас есть только одно выражение в скобках, и оно совпадает с искомым текстом. Поэтому оно нумеруется при помощи последовательности \1.

Заменить точку на запятую в десятичных дробях

В тексте много дробей, в части из них встречаются точки, с части - запятые. Нужно навести единообразие, но просто так замену точки на запятую делать нельзя, поскольку встречаются они еще много где в тексте документа. Делаем замену последовательности (<[0-9]@).([0-9]@>) на \1,\2.

Опять-таки, объясню, как это работает. Если опустить круглые скобки, то мы получим знакомое нам начало слова, цифру. Далее идет символ @, обозначающий, что предыдущий символ может быть повторен еще сколько угодно раз. Затем идет запятая и то же самое по конец слова. Так мы находим дроби, написанные через запятую. Теперь обратим внимание на скобки. Первая пара скобок окружает часть выражения до запятой, вторая - все после запятой. Тем самым, \1 в замене будет обозначать все до запятой, а \2 - после. Вот из этих двух выражений и точки между ними мы и конструируем выражение для замены.

Убрать повторяющиеся друг за другом строки

При составлении указателя возможна ситуация, когда вы определяете, какие термины встречаются на странице, выписывая их в отдельный файл или даже воспользовавшись описанными выше удалениями слов с маленькой буквы. Итак, допустим у вас есть список терминов, встретившихся на данной странице, среди него встречаются дубликаты. Вы можете отсортировать его алфавитно, и дубликаты будут идти друг за другом. Как быстро избавиться от повторений? Очень просто! Делаем замену комбинации ^13(*)^13\1^13 на ^13\1^13.

Здесь есть, что объяснить. Мы использовали уже знакомую нам комбинацию \1, но не в замене, а в поиске. Но означает она то же самое. Итак, мы ищем последовательность, в которой идет символ новой строки, сколько угодно символов, опять перевод строки, те же символы, что были до этого, и еще один перевод строки. Это и есть то, что нам нужно, две строки с одинаковым содержимым, идущие последовательно друг за другом. А заменяем мы это выражение на одну такую строку.

Подобную замену обычно стоит прогнать несколько раз для надежности. Как это может помочь при составлении указателя? А так, что после того, как определены все термины на странице, мы можем в конце этих строк приписать номер этой страницы (сделав, например, замену ^13 на 57^13, если вы сейчас находитесь на 57 странице).

В итоге вы получите много строк типа Компьютер 57 и Интернет 60. Как же их теперь объединить?

Сложное объединение строк

После алфавитной сортировки вы получите ситуацию, когда строки с одним термином идут последовательно. Например, строка Компьютер 57 сразу идет за строкой Компьютер 51. Как же их автоматически заменить на строку вида Компьютер 51, 57? Необходимо сделать замену выражения ^13(*) ([0-9]*)^13\1 (*)^13 на ^13\1 \2, \3^13.

Что за конструкция у нас получилась? Мы ищем перевод строки, любое количество символов (они нумеруются через 1 и подразумевают под собой ключевое слово), пробел, после которого идет цифра и еще раз любое количество символов (все, что начинается с цифры, нумеруется через 2). Далее идет перевод строки, а за ним должна повторяться первая последовательность. Остаток нумеруется через 3 и заканчивается новым переводом строки. Заменяем мы это все на ключевое слово, за которым идут два остатка через запятую. Подобную замену нужно проводить несколько раз для достижения цели.

Итоги

Я постарался объяснить, как работают замены с использованием подстановочных знаков в Microsoft Word. Полный список возможных знаков я приводить не буду - вы их легко найдете в справке Word или в интернете. Ведь главное было объяснить идею, разве не так? А если что - спрашивайте!

← Дефекты фотографииЧто такое аудионаркотики? →
comments powered by Disqus