Специальные символы и подстановочные знаки в операциях поиска и замены 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 — английские прописные буквы;
a-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 (Заменить все) и насладиться результатом.
Сергей Михайлович Хозяинов
наверх
|