Артефакт

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

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

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

18 ноября 2020 г.
Комплектация библиотеки файлами .fb2

Ещё на сайте

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

Интернет

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