Артефакт

Специальные символы и подстановочные знаки в операциях поиска и замены MS Word 97/2000/XP

Автор: С. М. Хозяинов

Оригинал статьи находится по адресу http://calends.webzone.ru.

Зачем это надо?
Какие такие знаки?
Строка поиска
Строка замены
Замечания по синтаксису
Примеры

Microsoft Word предоставляет необыкновенно мощный инструмент для поиска и замены. Умение грамотно им пользоваться существенно упрощает редактирование и правку документов. В этой статье я расскажу, как использовать специальные знаки в операциях поиска и замены, и приведу ряд примеров.

Зачем это надо?

Пример 1

Рассмотрим простой случай поиска и замены.

Требуется заменить в документе фамилию Иванов на Петров.

Строка поиска Строка замены Результат поиска и замены
Иванов  Петров  Иванов будет заменен на Петров

А можно ли произвести одну такую замену, чтобы в документе сразу заменить:

Иванов на Петров,
Иванову на Петрову,
Ивановым на Петровым,
Иванова на Петрова,
Ивановы на Петровы,

и т. п.?

Да, можно. Для этого надо использовать специальные знаки.

Пример 2

В документе очень много десятичных дробей. Часть дробей набрана через точку, часть — через запятую.

Можно ли произвести такую замену, чтобы сделать написание всех дробей единообразным?

Да, можно. Для этого надо использовать специальные знаки.

Пример 3

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

Alpha(nu)meric display - буквенно-цифровой (символьный) дисплей

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

Alpha(nu)meric keyboard - буквенно(алфавитно)-цифровая клавиатура

Клавиатура для ввода кодовых представлений цифр и букв, имеющая маркировку символьного набора.

Alternate key - альтернативный ключ

Ключ поиска в базе данных, не указанный в качестве первичного ключа.

Alternate Mark Inversion (AMI) - чередующаяся инверсия единиц

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

В тексте нет никаких выделений. Общее число словарных статей -- 30 000.

Требуется:

1. Найти все переводимые английские термины и выделить их полужирным начертанием. При этом все другие английские слова оставить в неприкосновенности.

2. Дефис между английским термином и его переводом заменить на тире. При этом все другие дефисы оставить в неприкосновенности.

Т. е. найти все 30 000 фрагментов текста, отвечающих вышеприведенным условиям, и сделать 30 000 выделений полужирным начертанием и 30 000 замен дефиса на тире.

Можно ли это сделать за 1 минуту?

Да, можно. Для этого надо использовать специальные знаки.

Какие такие знаки?

В Microsoft Word существуют два типа специальных знаков — специальные символы и подстановочные знаки. Те и другие удобно вводить в строки поиска и замены используя кнопку Special (Специальный) в диалоге поиска и замены.

Специальными символами называют символы, которых нет на клавиатуре и/или которые невозможно непосредственно вписать в строку поиска или замены. Например: принудительный обрыв строки, мягкий перенос, неразрывный пробел и т. п.

Если в диалоге поиска и замены задействована опция Use wildcards (Подстановочные знаки), то становится возможным формировать сложные условия поиска. Для этого используются подстановочные знаки. С их помощью можно задавать диапазоны символов и выражения, отвечающие ряду условий.

Некоторые символы и знаки можно использовать только в строке поиска, некоторые - только в строке замены. Возможность использования других зависит от того, задействована или нет опция Use wildcards (Подстановочные знаки).

Ниже я привожу полный список символов и знаков.

А еще ниже - примеры их использования.

Строка поиска

Специальные символы, которые можно использовать только в том случае, если опция Use wildcards (Подстановочные знаки) не задействована.

Спец. символы Что обозначают
^p Paragraph mark (¶) Символ конца абзаца (¶)
^? Any character Любой символ
^# Any digit Любая цифра
^$ Any letter Любая буква
^e Endnote mark Концевая сноска
^d Field Поле
^f Footnote mark Сноска
^b Section break
(===End of section===)
Обрыв секции
(===End of section===)
^w Whitespace Любое число и любая комбинация обыкновенных и неразрываемых пробелов, табуляций и концов абзаца

Специальные символы, использование которых не зависит от опции Use wildcards (Подстановочные знаки).

Спец. символы Что обозначают
^t Tab character (®) Символ табуляции (®)
^a Comment mark Комментарий
^0nnn ANSI or ASCII characters Любой ANSI или ASCII символ с кодом nnn
^^ Caret character Символ ^
^g Graphic Графика
^n Column break
(···Column Break···)
Обрыв колонки
(···Column Break···)
^l Manual line break (¿) Принудительный обрыв строки (¿)
^m Manual page break
(---Page Break---)
Принудительный обрыв страницы (---Page Break---). Если опция Use wildcards задействована, то ищет и принудительный обрыв страницы, и обрыв секции.
^+ Em dash (—) Длинное тире (—). Символ с кодом 0151.
^= En dash (–) Короткое тире (–). Символ с кодом 0150.
^s Nonbreaking space (°) Неразрываемый пробел (°)
^~ Nonbreaking hypen (-) Неразрываемый дефис (-)
^- Optional hypen (¬) Мягкий перенос (¬)

Подстановочные знаки, которые можно использовать только в том случае, если опция Use wildcards (Подстановочные знаки) задействована.

Спец. знаки Что обозначают Пример строки поиска Что будет находить
? Один любой символ б?к бак, бок, бук, б5к, б¶к и т. п.
* Любое число любых символов б*к бык, бардак, белый.¶
Полковник
и т. п.
[] Один из указанных символов б[аоу]к бак, бок, бук
[-] Один символ из диапазона.
Диапазон должен быть указан в порядке возрастания кодов символов.
[а-яё] Любая строчная русская буква
[А-ЯЁ] Любая прописная русская буква
[0-9] Любая цифра
[!] Один любой символ не указанный после восклицательного знака б[!ы]к бак, бок и т. п., но не бык
[!x-z] Один любой символ, не входящий в диапазон указанный после восклицательного знака [!а-яё]ок Бок, Док и т. п., но не бок, док
[!0-9] Любой символ кроме цифр
{n} Строго n штук предыдущего символа или выражения.
Выражением является все то, что заключено в круглые скобки. Выражение может состоять как из конкретных символов, так и содержать спец. знаки.
10{3} 1000, но не 100, 10000
10(20){2} 102020, но не 1020, 10202020
{n;} n и более штук предыдущего символа или выражения 10{3;} 1000, 10000, 100000 и т. д., но не 100
{n;m} От n до m штук предыдущего символа или выражения 10{3;4} 1000, 10000, но не 100, 100000
@ Ноль или более штук предыдущего символа или выражения 10@ 10, 100, 1000, 10000 и т. д.
< Начало слова <бок боксер, но не колобок
> Конец слова бок> колобок, но не боксер

Строка замены

Специальные символы, использование которых не зависит от опции Use wildcards (Подстановочные знаки).

Спец. символы Что обозначают
^p Paragraph mark (¶) Символ конца абзаца (¶)
^t Tab character (®) Символ табуляции (®)
^0nnn ANSI or ASCII characters Любой ANSI или ASCII символ с кодом nnn
^^ Caret character Символ ^
^c Clipboard contents Содержимое буфера обмена
^& Contents of the Find what box Содержимое строки поиска (или то, что найдено)
^n Column break
(···Column Break···)
Обрыв колонки
(···Column Break···)
^l Manual line break (¿) Принудительный обрыв строки (¿)
^m Manual page break
(---Page Break---)
Принудительный обрыв страницы
(---Page Break---)
^+ Em dash (—) Длинное тире (—). Символ с кодом 0151.
^= En dash (–) Короткое тире (–). Символ с кодом 0150.
^s Nonbreaking space (°) Неразрываемый пробел (°)
^~ Nonbreaking hypen (-) Неразрываемый дефис (-)
^- Optional hypen (¬) Мягкий перенос (¬)

Подстановочные знаки, которые можно использовать только в том случае, если опция Use wildcards (Подстановочные знаки) задействована.

Знаки Что обозначают
\n Expression n Выражение номер n из строки поиска

Замечания по синтаксису

Точка с запятой в операторах {n;} и {n;m} — это не просто точка с запятой, а так называемый List separator (Разделитель элементов списка). В США это запятая, в России — точка с запятой. Чтобы узнать, какой символ играет роль разделителя элементов списка в вашей конфигурации, загляните в Control Panel | Regional Settings | Numbers | List separator (Панель управления | Язык и стандарты | Числа | Разделитель элементов списка).

Для поиска в документе знаков, которые в строке поиска используются как специальные, необходимо набирать перед ними обратный слэш (\). Например, если задействована опция Use wildcards (Подстановочные знаки), то, чтобы искать восклицательный знак, надо в строке поиска набрать обратный слэш и за ним восклицательный знак (\!).

Примеры

Опция Use wildcards (Подстановочные знаки) должна быть задействована в диалоге поиска и замены. Это условие должно соблюдаться для всех приведенных ниже примеров.

Примеры поиска

Строка поиска Что будет находить
[!^0013]^0013[!^0013] Одиночный конец абзаца в окружении двух неконцов. (Подробный разбор см. ниже).
^0013{2;} Два и более конца абзацев
^0032{2;} Два и более пробела
[.,:;\!\?] Знак препинания ( . , : ; ! ? )
[0-9]^0032[0-9] Две цифры, разделенные пробелом
[0-9]^0032[A-Za-zА-яЁё] Цифра и буква (английская или русская) разделенные пробелом.
(Подробный разбор см. ниже).
-[0-9] Дефис и цифра
<[0-9]@-[0-9]@> Два целых числа, разделенные дефисом
\([0-9]\) Цифра в круглых скобках
<[0-9]@> Целое число (точнее — непрерывная последовательность цифр)
<[0-9]@,[0-9]@> Десятичная дробь, набранная через запятую
<[A-Za-z]@> Английское слово
<[А-яЁё]@> Русское слово
<[А-ЯЁ][а-яё]@> Русское слово, набранное строчными буквами, но с прописной.
(Подробный разбор см. ниже).

Подробный разбор нескольких строк поиска

[!^0013]^0013[!^0013]

1 символ строки поиска 2 символ 3 символ
Любой символ, но не конец абзаца Конец абзаца Любой символ, но не конец абзаца
[!^0013] ^0013 [!^0013]
В квадратных скобках указан символ с кодом 0013 (конец абзаца). Знак «!» указывает на то, что в этой позиции может находится любой символ кроме конца абзаца. Конец абзаца (символ с кодом 0013). В квадратных скобках указан символ с кодом 0013 (конец абзаца).
Знак «!» указывает на то, что в этой позиции может находится любой символ кроме конца абзаца.

[0-9]^0032[A-Za-zА-яЁё]

1 символ строки поиска 2 символ 3 символ
Любая цифра Пробел Любая буква (английская или русская)
[0-9] ^0032 [A-Za-zА-яЁё]
В квадратных скобках указан диапазон знаков от 0 до 9, т. е. цифры. Пробел (символ с кодом 0032). Допустимый символ определен тремя диапазонами и двумя конкретными символами.
A-Z — английские прописные буквы;
а-z — английские строчные буквы;
А-я — русские прописные и строчные буквы;
Ёё — прописная и строчная ё (чтобы охватить весь русский алфавит).

<[А-ЯЁ][а-яё]@>

1 позиция строки поиска 2 позиция
Любая русская прописная буква Любые русские строчные буквы
<[А-ЯЁ] [а-яё]@>
В квадратных скобках указан диапазон знаков от А до Я и Ё (т. е. любая русская прописная буква).
Знак «<»указывает на то, что прописная буква должна быть в начале слова.
Диапазон в квадратных скобках определяет все русские строчные буквы.
Знак «@» говорит о том, что число русских строчных букв может быть равным или больше нуля.
Знак «>» указывает на конец слова.

Об операциях с выражениями

Для работы с выражениями задействуйте опцию Use wildcards (Подстановочные знаки).

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

В строке замены выражения представляются в виде: \n, где n - номер выражения в строке поиска.

Простой пример, поясняющий работу с выражениями

Будем редактировать предложение: Сережа ест грушу.

Строка поиска Строка замены Результат поиска и замены
(Сережа )(ест )(грушу). \3 \2\1 грушу ест Сережа.
\1\3 с хрустом \2 Сережа грушу с хрустом ест .
\1и Катя едят \3 Сережа и Катя едят грушу.
\1\2\3 и Катя \2\3 Сережа ест грушу и Катя ест грушу.

Примеры поиска и замены

Строка поиска Строка замены Результат поиска и замены
([!^0013]^0013)([!^0013]) \1^0013\2 Вставка пустой строки между теми абзацами, между которыми пустой строки не было.
(^0013){2;} \1 Удаление пустых строк
^0032{2;} ^0009 Замена двух или более пробелов на табуляцию
^0032([.,:;\!\?]) \1 Удаление пробела перед знаком препинания ( . , : ; ! ? )
([0-9])^0032([0-9]) \1^s\2 Замена пробела между цифрами на неразбиваемый пробел
([0-9])^0032([A-Za-zА-яЁё]) \1^s\2 Замена пробела между цифрой и буквой (английской или русской) на неразбиваемый пробел
-([0-9]) ^0150\1 Замена дефиса перед цифрой на минус
\(([0-9])\) [\1] Замена круглых скобок вокруг цифры на квадратные

И еще три примера

Пример 1

Замена в документе фамилии Иванов на фамилию Петров сразу во всех падежах:

Строка поиска Строка замены Результат поиска и замены
Ивано([а-я]@>) Петро\1 Замена фамилии Иванов на фамилию Петров сразу во всех падежах

Конечно, такая замена возможна только с фамилиями, у которых одинаковые падежные окончания.

Пример 2

В документе очень много десятичных дробей. Часть дробей набрана через точку, часть — через запятую.

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

Вот два варианта этой замены:

Строка поиска Строка замены Результат поиска и замены
(<[0-9]@).([0-9]@>) \1,\2 Десятичная точка будет заменена
на запятую
(<[0-9]@),([0-9]@>) \1.\2 Десятичная запятая будет заменена
на точку

Пример 3

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

Alpha(nu)meric display - буквенно-цифровой (символьный) дисплей

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

Alpha(nu)meric keyboard - буквенно(алфавитно)-цифровая клавиатура

Клавиатура для ввода кодовых представлений цифр и букв, имеющая маркировку символьного набора.

Alternate key - альтернативный ключ

Ключ поиска в базе данных, не указанный в качестве первичного ключа.

Alternate Mark Inversion (AMI) - чередующаяся инверсия единиц

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

В тексте нет никаких выделений. Общее число словарных статей -- 30 000.

Требуется:

1. Найти все переводимые английские термины и выделить их полужирным начертанием. При этом все другие английские слова оставить в неприкосновенности.

2. Дефис между английским термином и его переводом заменить на тире. При этом все другие дефисы оставить в неприкосновенности.

Т. е. найти все 30 000 фрагментов текста, отвечающих вышеприведенным условиям, и сделать 30 000 выделений полужирным начертанием и 30 000 замен дефиса на тире.

В результате должно получиться следующее:

Alpha(nu)meric display — буквенно-цифровой (символьный) дисплей

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

Alpha(nu)meric keyboard — буквенно(алфавитно)-цифровая клавиатура

Клавиатура для ввода кодовых представлений цифр и букв, имеющая маркировку символьного набора.

Alternate key — альтернативный ключ

Ключ поиска в базе данных, не указанный в качестве первичного ключа.

Alternate Mark Inversion (AMI) — чередующаяся инверсия единиц

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

Вот как это решается за пару минут:

Строка поиска Строка замены
(^0013[A-Za-z^0032\(\)]@)^0032- \1^0032^0151

Для строки замены необходимо установить Format: Bold (Формат: полужирный). Для этого воспользуйтесь кнопкой Format (Формат).

Вот и все. Осталось нажать на кнопку Replace All (Заменить все) и насладиться результатом.

Сергей Михайлович Хозяинов

Новости раздела

4 августа 2008 г.
Copy Editing: последняя часть

Ещё на сайте

Библиотека
Языки
Друзья
Канада
Авторский угол

Интернет

CPAN
Citforum
W3C.org
useit.com
Типомания
Code Charts
ру/ководство
Лаборатория dk
WebReference.com
Спецификация Perl
Заметки HTML-кодера
Анатомия Adobe Photoshop
The Apache Software Foundation


Рейтинг@Mail.ru

wordpress statistics

Рейтинг@Mail.ru