Специальные символы и подстановочные знаки в операциях поиска и замены Microsoft Word
Опубликовано Васлиддин Туйчиев Офисные программы, Советы и секретыMicrosoft Word 97 предоставляет необыкновенно мощный инструмент для поиска и замены. Умение грамотно им пользоваться существенно упрощает редактирование и правку документов. В этой статье я расскажу как использовать специальные знаки в операциях поиска и замены и приведу ряд примеров.
Пример 1 Рассмотрим простой случай поиска и замены.
Требуется заменить в документе фамилию Иванов на Петров.
| Строка поиска | Строка замены | Результат поиска и замены |
| Иванов | Петров | Иванов будет заменен на Петров |
Поскольку фамилия Иванова в документе может быть в разных падежах и числах, то придется выполнить последовательно много замен.
А можно ли произвести одну такую замену, чтобы в документе сразу заменить:
Иванов на Петров,
Иванову на Петрову,
Ивановым на Петровым,
Иванова на Петрова,
Ивановы на Петровы,и т. п.?
Да можно. Для этого надо использовать специальные знаки.
Пример 2
В документе очень много десятичных дробей. Часть дробей набрана через точку, часть — через запятую.
Можно ли произвести такую замену, чтобы сделать написание всех дробей единообразным.
Да можно. Для этого надо использовать специальные знаки.
Пример 3
Дано 30 файлов содержащих текст словаря компьютерных терминов следующего вида:
Alpha(nu)meric display – буквенно-цифровой (символьный) дисплей
Дисплей, предназначенный для работы с буквенной, цифровой и сопутствующей символьной информацией.
Alpha(nu)meric keyboard – буквенно(алфавитно)-цифровая клавиатура
Клавиатура для ввода кодовых представлений цифр и букв, имеющая маркировку символьного набора.
Alternate key – альтернативный ключ
Ключ поиска в базе данных, не указанный в качестве первичного ключа.
Alternate Mark Inversion (AMI) – чередующаяся инверсия единиц
Способ биполярного кодирования, в котором следующие подряд единицы (mark) кодируются сигналами с противоположными знаками.
В тексте нет никаких выделений. Общее число словарных статей — 30000.
Требуется:
-
Найти все переводимые английские термины и выделить их полужирным начертанием.
-
Дефис между английским термином и его переводом заменить на тире (при этом все другие дефисы оставить в неприкосновенности).
Т.е. сделать 30000 выделений полужирным начертанием и 30000 замен дефиса на тире.
Можно ли это сделать за 5 минут?
Да можно. Для этого надо использовать специальные знаки. В 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 | White space | Любое число и любая комбинация обыкновенных и неразрываемых пробелов, табуляций и концов абзаца |
Специальные символы, использование которых не зависит от опции Use wildcards (Подстановочные знаки).
|
Спец. символы |
Что обозначают |
|
| ^t | Tab character (®) | Символ табуляции (®) |
| ^a | Comment mark | Комментарий |
| ^0nnn | ANSI or ASCII characters | Любой ANSI или ASCII символ с кодом nnn |
| ^^ | Caret character | Символ ^ |
| ^g | Graphic | Графика |
| ^n | Column break (··· Break···) |
Обрыв колонки (··· 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 hyphen (-) | Неразрываемый дефис (-) |
| ^- | Optional hyphen (¬) | Мягкий перенос (¬) |
Подстановочные знаки, которые можно использовать только в том случае, если опция 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 (··· Break···) |
Обрыв колонки (··· Break···) |
| ^l | Manual line break (®) | Принудительный обрыв строки (®) |
| ^m | Manual page break (—Page Break—) |
Принудительный обрыв страницы (—Page Break—) |
| ^+ | Em dash (—) | Длинное тире (—). Символ с кодом 0151. |
| ^= | En dash (–) | Короткое тире (–). Символ с кодом 0150. |
| ^s | Nonbreaking space (°) | Неразрываемый пробел (°) |
| ^~ | Nonbreaking hyphen (-) | Неразрываемый дефис (-) |
| ^- | Optional hyphen (¬) | Мягкий перенос (¬) |
Подстановочные знаки, которые можно использовать только в том случае, если опция Use wildcards (Подстановочные знаки) задействована.
|
Знаки |
Что обозначают |
|
| \n | Expression n | Выражение номер n из строки поиска |
Точка с запятой в операторах {n;} и {n;m} — это не просто точка с запятой, а, так называемый, List separator (Разделитель элементов списка). В США это запятая, в России — точка с запятой. Чтобы узнать какой символ играет роль разделителя элементов списка в вашей конфигурации, загляните в Control Panel\Regional Settings\Number\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]@> | Английское слово |
| <[А-яЁё]@> | Русское слово |
| <[А-ЯЁ][а-яё]@> | Русское слово набранное строчными буквами, но с прописной. (Подробный разбор см. ниже). |
Подробный разбор нескольких строк поиска
| 1 символ строки поиска | 2 символ | 3 символ |
| Любой символ, но не конец абзаца | Конец абзаца | Любой символ, но не конец абзаца |
| [!^0013] | ^0013 | [!^0013] |
| В квадратных скобках указан символ с кодом 0013 (конец абзаца). Знак “!” указывает на то, что в этой позиции может находится любой символ кроме конца абзаца. |
Конец абзаца (символ с кодом 0013). | В квадратных скобках указан символ с кодом 0013 (конец абзаца). Знак “!” указывает на то, что в этой позиции может находится любой символ кроме конца абзаца. |
| 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
Дано 30 файлов содержащих текст словаря компьютерных терминов следующего вида:
| Alpha(nu)meric display – буквенно-цифровой (символьный) дисплей
Alpha(nu)meric keyboard – буквенно(алфавитно)-цифровая клавиатура
Alternate key – альтернативный ключ
Alternate Mark Inversion (AMI) – чередующаяся инверсия единиц
|
В тексте нет никаких выделений. Общее число словарных статей — 30000.
Требуется:
-
Найти все переводимые английские термины и выделить их полужирным начертанием.
-
Дефис между английским термином и его переводом заменить на тире (при этом все другие дефисы оставить в неприкосновенности).
Т.е. сделать 30000 выделений полужирным начертанием и 30000 замен дефиса на тире.
В результате должно получиться следующее:
| Alpha(nu)meric display — буквенно-цифровой (символьный) дисплей
Alpha(nu)meric keyboard — буквенно (алфавитно)-цифровая клавиатура
Alternate key — альтернативный ключ
Alternate Mark Inversion (AMI) — чередующаяся инверсия единиц
|
Вот как это решается за 5 минут:
| Строка поиска | Строка замены |
| (^0013[A-Za-z^0032\(\)]@)^0032- | \1^0032^0151 |
Для строки замены необходимо установить Format: Bold (Формат: полужирный). Для этого воспользуйтесь кнопкой Format (Формат).

Вот и все. Осталось нажать на кнопку Replace All (Заменить все) и насладиться результатом.
Сергей Михайлович Хозяинов
E-mail: smh@mail.ru
Home Page: http://stop.at/smh
Свежие комментарии