Специальные символы и подстановочные знаки в операциях поиска и замены 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 ( Подстановочные знаки ).
Подстановочные знаки, которые можно использовать только в том случае, если опция Use wildcards ( Подстановочные знаки ) задействована.
Спец. знаки Что обозначают Пример строки поиска Что будет находить ? Один любой символ б ? к бак , бок , бук , б5к , б¶к и т. п. * Любое число любых символов б * к бык , бардак , белый.¶ Полковник и т. п. [] Один из указанных символов б [ аоу ] к бак , бок , бук [-] Один символ из диапазона. Диапазон должен быть указан в порядке возрастания кодов символов. [ а - яё ] Любая строчная русская буква [ А - ЯЁ ] Любая прописная русская буква [0-9] Любая цифра [!] Один любой символ не указанный после восклицательного знака б [! ы ] к бак , бок и т. п., но не бык [!x-z] Один любой символ, не входящий в диапазон указанный после восклицательного знака [! а - яё ]ок Бок , Док и т. п., но не бок , док [!0-9] Любой символ кроме цифр Строго n штук предыдущего символа или выражения. Выражением является все то, что заключено в круглые скобки. Выражение может состоять как из конкретных символов, так и содержать спец. знаки. 10 1000 , но не 100 , 10000 10(20) 102020 , но не 1020 , 10202020 n и более штук предыдущего символа или выражения 10 1000 , 10000 , 100000 и т. д., но не 100 От n до m штук предыдущего символа или выражения 10 1000 , 10000 , но не 100 , 100000 @ Ноль или более штук предыдущего символа или выражения 10@ 10 , 100 , 1000 , 10000 и т. д. < Начало слова < бок бок сер, но не коло бок > Конец слова бок > коло бок , но не бок сер
Строка замены
Специальные символы, использование которых не зависит от опции Use wildcards ( Подстановочные знаки ).
Подстановочные знаки, которые можно использовать только в том случае, если опция Use wildcards ( Подстановочные знаки ) задействована.
Знаки Что обозначают \n Expression n Выражение номер n из строки поиска
Замечания по синтаксису
Точка с запятой в операторах и это не просто точка с запятой, а так называемый List separator ( Разделитель элементов списка ). В США это запятая, в России точка с запятой. Чтобы узнать, какой символ играет роль разделителя элементов списка в вашей конфигурации, загляните в Control Panel | Regional Settings | Numbers | List separator ( Панель управления | Язык и стандарты | Числа | Разделитель элементов списка ).
Для поиска в документе знаков, которые в строке поиска используются как специальные, необходимо набирать перед ними обратный слэш ( \ ). Например, если задействована опция Use wildcards ( Подстановочные знаки ), то, чтобы искать восклицательный знак, надо в строке поиска набрать обратный слэш и за ним восклицательный знак ( \! ).
Примеры
Опция Use wildcards ( Подстановочные знаки ) должна быть задействована в диалоге поиска и замены. Это условие должно соблюдаться для всех приведенных ниже примеров.
Примеры поиска Строка поиска Что будет находить [!^0013]^0013[!^0013] Одиночный конец абзаца в окружении двух неконцов. (Подробный разбор см. ниже). ^0013 Два и более конца абзацев ^0032 Два и более пробела [. ;\!\?] Знак препинания ( . , : ; ! ? ) [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) \1 Удаление пустых строк ^0032 ^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 Замена фамилии Иванов на фамилию Петров сразу во всех падежах
Конечно, такая замена возможна только с фамилиями, у которых одинаковые падежные окончания.
В документе очень много десятичных дробей. Часть дробей набрана через точку, часть через запятую.
Требуется произвести такую замену, чтобы сделать написание всех дробей единообразным.
Вот два варианта этой замены:
Строка поиска Строка замены Результат поиска и замены (<[0-9]@).([0-9]@>) \1,\2 Десятичная точка будет заменена на запятую (<[0-9]@),([0-9]@>) \1.\2 Десятичная запятая будет заменена на точку
Дан большой документ содержащий текст словаря компьютерных терминов следующего вида:
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 ( Заменить все ) и насладиться результатом.