[an error occurred while processing this directive]
.


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

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

Пример 1

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

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

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

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

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

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

и т. п.?

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

Пример 2

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

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

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

Пример 3

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

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

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

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

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

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

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

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

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

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

Требуется:

  1. Найти все переводимые английские термины и выделить их полужирным начертанием.
  2. Дефис между английским термином и его переводом заменить на тире (при этом все другие дефисы оставить в неприкосновенности).

Т.е. сделать 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]@> Английское слово
<[А-яЁё]@> Русское слово
<[А-ЯЁ][а-яё]@> Русское слово набранное строчными буквами, но с прописной. (Подробный разбор см. ниже).

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

[!^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

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

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

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

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

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

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

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

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

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

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

Требуется:

  1. Найти все переводимые английские термины и выделить их полужирным начертанием.
  2. Дефис между английским термином и его переводом заменить на тире (при этом все другие дефисы оставить в неприкосновенности).

Т.е. сделать 30000 выделений полужирным начертанием и 30000 замен дефиса на тире.

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

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

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

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

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

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

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

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

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

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

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

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

Dialog Find and Replace

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


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

E-mail: smh@mail.ru
Home Page: http://stop.at/smh



ВверхE-mail

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

[an error occurred while processing this directive]